Hadoop分布式搭建
以三台虚拟机组成hadoop分布式系统,其中一台master,两台slave,master既是名称节点,也是数据节点,其他都为数据节点。
配置环境变量
将hadoop-3…2.1放在/usr/soft下,并命名hadoop321
将jdk-10放在/usr/soft下,命名jdk10
更改/etc/profile文件
在/etc/profile的最后加上
export JAVA_HOME=/usr/soft/jdk10
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/usr/soft/hadoop321
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
更新环境变量
. /etc/profile
配置hadoop
1、编辑/usr/soft/hadoop321/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
2、编辑/usr/soft/hadoop321/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
#节点数量
<value>3</value>
</property>
<property>
<name>dfs.http.address</name>
#访问ip:端口
<value>0.0.0.0:5700</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
#namenode位置
<value>file:///root/hadoop/dfs/namenode</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
#datanode位置
<value>file:///root/hadoop/dfs/datanode</value>
</property>
</configuration>
3、初始化namenode
hdfs name -formate
查看/root/hadoop/dfs目录下是否有namenode目录
若存在,则NameNode初始化成功
若不存在,执行以下命令
cd /tmp
rm -rf *
清除缓存,重新初始化
4、修改用户配置(可选)
hadoop默认不能使用root用户登录(权限过大)
若要使用root用户登录hadoop
需修改/usr/soft/hadoop321/sbin/start-dfs.sh和/usr/soft/hadoop321/sbin/stop-dfs.sh
在开头添加以下代码
HDFS_NAMENODE_USER=root
HDFS_DATANODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
5、指定JAVA_HOME
hadoop不会指定的寻找JAVA_HOME需要配置
修改文件/usr/soft/hadoop321/etc/hadoop/hadoop-env.sh
将原先代码
# export JAVA_HOME=
修改为
# export JAVA_HOME=/usr/soft/jdk10
6、开启hdfs服务
执行命令开启服务
start-dfs.sh
输入命令测试
jps
显示jps、datanode、namenode、secondarynamenode四项表示成功
可访问当前ip:5700加入hdfs服务管理界面。(ip通过ip add查看ens33对应的ip)
7、克隆虚拟机
-
关闭虚拟机
-
右击虚拟机选择管理->克隆
-
选择完整克隆(其他不变)
-
配置新虚拟机为slave1
-
登入新虚拟机,使用命令
hostnamectl set-hostname slave1
-
输入 ip add查看ip
-
重复上面,配置slave2
8、设置master对slave1和slave2的免密登录
-
创建密钥
cd /root/.ssh ssh-keygen
在.ssh生成
id_rsa 私钥
id_rsa.pub 公钥
-
发布公钥
cat id_rsa.pub>>authorized_keys
authorized_keys:广而告之文件
-
免密登录slave
在slave中创建目录/root/.ssh
在master中执行scp authorized_keys root@slave1 slave1的ip:/root/.ssh
即可在master中使用ssh slave1免密登录slave1
9、分布式hadoop:hdfs
主机名 | hdfs角色 | yarn角色 |
---|---|---|
master | namenode、datanode | resourcemanager |
slave1 | datanode | nodemanager |
slave2 | datanode | nodemanager |
域名配置
在三个虚拟机中的/etc/hosts配置域名,在文末加上
192.168.33.129 master
192.168.33.130 slave1
192.168.33.131 slave2
ip是在主机上使用ip add获取
设置集群成员
为三个虚拟机都配置
在/usr/soft/hadoop321/etc/hadoop/workers中添加内容
master
slave1
slave2
修改副本数量
修改/usr/soft/hadoop321/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name>
#节点数量
<value>3</value>
</property>
启动hdfs
在master上启动hdfs
hdfs会根据配置启动slave1和slave2
访问hadoop
上传文件
hdfs dfs -put a.txt hdfs://master:9000/root
根据文件上传是否成功判断
浏览master的ip:5700到达hdfs的管理界面,查看DataNode数量是否为3.
若不为3,可考虑先关闭hdfs,使用rm - rf /tmp将slave1和slave2的 /tmp目录下的文件全部删除,执行find / -name VERSION查找datanode相关的信息,全部删除。在启动hdfs
注:因为虚拟机都是克隆的,DataNode的id值都相同,无法在hdfs的管理界面上显示全部。
yarn资源管理器
配置
配置/usr/soft/hadoop321/etc/hadoop/yarn-site.xml(每台)
<configuration>
<property>
<name>yarn.nodemanager.aux-serivces</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
配置/usr/soft/hadoop321/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
若要使用root用户登录,则需要配置yarn-start.sh和yarn-stop.sh
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root