本次基于hadoop-2.6.0-cdh5.8.0版本进行分布式配置。在此设置一个主节点和两个从节点。
准备3台虚拟机,分别为:
主机名 | IP地址 |
master | 192.168.0.118 |
slave1 | 192.168.0.123 |
slave2 | 192.168.0.133 |
1. 修改主机名称,把三个节点分别修改hostname,修改主机名为master,slave1,slave2
hostname master
hostname slave1
hostname slave2
2. 把三个节点的防火墙关闭,在三个节点分别执行
servicefirewalld stop
3.在三个节点修改配置hosts文件,在hosts文件中分别配置三个节点的主机名 ip地址映射 (vi /etc/hosts)
192.168.0.118 master
192.168.0.123 slave1
192.168.0.133 slave2
4.在master和slave之间配置SSH互信(master到slave的免密登录)
在master上 生成公钥私钥ssh-keygen -t rsa
将公钥追加到slave端scp root@slaveIP:root/.ssh/id_rsa.pub ./.ssh/id_rsa.pub
先讲公钥算追加到私钥cat id_rsa.pub >> authorized_keys
再将公钥追加到slave端的authorized_keys
文件中cat /root/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys
sshslave的IP 测试是否成功,若不需要输入密码则成功
5.把JDK和Hadoop安装包上传到master节点下
6.在三个节点下面配置jdk。解压jdk包
7.三个节点配置java环境变量,需要修改profile文件(root用户操作)
vi /etc/profile
export JAVA_HOME=/root/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH
修改后 生效 source /etc/profile
8.在三个节点把修改的java环境变量生效(root用户操作),jdk配置完成
9. 配置hadoop,在hadoop用户的根目录,解压(hadoop用户操作)
10. 修改配置文件etc/hadoop/slaves,每一行是一个从节点主机名称(hadoop用户操作)
slave1
salve2
11. 修改配置文件etc/hadoop/hadoop-env.sh(hadoop用户操作) exportJAVA_HOME=/home/hadoop/jdk1.8.0_65(红色部分为实际路径)
12. 修改配置文件etc/hadoop/core-site.xml(hadoop用户操作)
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop-2.6.0-cdh5.8.0/tmp</value>(创建目录)
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>(配置oozie交互用户)
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>(配置oozie交互用户组)
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.httpfs.hosts</name> (配置httpfs交互用户)
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.httpfs.groups</name> (配置httpfs交互用户组)
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hue.hosts</name>(配置hue交互用户)
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hue.groups</name>(配置hue交互用户组)
<value>*</value>
</property>
13. 修改配置文件etc/hadoop/hdfs-site.xml(hadoop用户操作)
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/hadoop-2.6.0-cdh5.8.0/hadoop/dfs/name</value>(创建路径)
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hadoop-2.6.0-cdh5.8.0/hadoop/dfs/data</value>(创建路径)
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
14.修改修改配置文件etc/hadoop/mapred-site.xml (hadoop用户操作),这个文件没有,需要复制一份cpetc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml添加
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
14. 修改配置文件etc/hadoop/yarn-site.xml(hadoop用户操作)
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!--
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>864000</value>
</property>
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>-1</value>
</property>
-->
15.创建目录/root/hadoop-2.6.0-cdh5.8.0/tmp
创建目录/root/hadoop-2.6.0-cdh5.8.0/hadoop/dfs/name
创建目录/root/hadoop-2.6.0-cdh5.8.0/hadoop/dfs/data
16.将配置好的hadoop文件copy到另外slave机器上(hadoop用户操作)
17.格式化HDFS,在hadoop解压目录下,执行如下命令:(hadoop用户操作)
bin/hdfs namenode-format
18.启动集群,在hadoop解压目录下,执行如下命令:(hadoop用户操作)
(修改start-all.sh加入命令mr-jobhistory-daemon.shstart historyserver
在stop-all.sh加入命令 mr-jobhistory-daemon.shstop historyserver)
sbin/start-all.sh
注意:如果引用到sqoop 需要引入jar包 jar包放入的地址为:
/root/hadoop-2.6.0-cdh5.8.0/share/hadoop/common/lib