注:测试通过,可放心的借鉴!不足之处,请多多指点!
在此 祝君们前程似锦
这里使用三台虚拟机 ,主机名称自定义,网址也是自定义,每台主机安装的功能
示例:
host 1 xxx.xxx.xxx.xxx NameNode、DataNode、RM、NM
host 1 xxx.xxx.xxx.xxx DataNode、NM、SNN
host 1 xxx.xxx.xxx.xxx DataNode 、NM
所有节点都需要配置
1.JDK 2.SSH免登陆 3.Hadoop集群
SSH免登陆配置
//在master机下生成公钥/私钥对。
# ssh-keygen -t rsa
//将公钥追加到authorized_keys文件当中
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
//将master机子上的authorized_keys给其它节点发送一份
# scp ~/.ssh/authorized_keys host2:/root/.ssh/
Hadoop集群搭建
修改hadoop-env.sh文件
将hadoop-env.sh文件中的 原配置: export JAVA_HOME=${JAVA_HOME}
修改后:export JAVA_HOME="/opt/modules/jdk1.7.0_79"
修改core-site.xml文件
<property>
<name>fs.defaultFS</name>
<value>hdfs://host1的网址:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
修改hdfs-site.xml文件
<!-- NameNode元数据存储路径设置 -->
<property>
<name></name>
<value>file:///opt/modules/hadoop-2.7.5/data/dfs/name</value>
<final>true</final>
</property>
<!--dfs.datanod 的数据块存储位置 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///opt/modules/hadoop-2.7.5/data/</value>
</property>
<!--HDFS本地网址配置 -->
<property>
<name>dfs.http.address</name>
<value>host1的网址:50070</value>
</property>
<!-- 用来保存namenode中对HDFS metadata的信息的备份,并减少namenode重启的时间 -->
<property>
<name>dfs.secondary.http.address</name>
<value>host1的网址:50090</value>
</property>
<!-- 副本数块 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--便于直接使用namenode的IP和端口进行所有的webhdfs操作 -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!--文件操作时的权限检查标识 -->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
修改mapred-site.xml文件
命令:
# mv mapred-site.xml.template mapred-site.xml
#vi mapred-site.xml
<!-- 指定mr的资源管理框架-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<!-- 指定mr的资源管理框架-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>host1的网址:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>host1的网址:19888</value>
</property>
修改yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master </value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序 -->
<property>
<name>yarn.resourcemanager.address</name>
<value>host1的网址:8032</value>
</property>
<!--ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源 -->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>host1的网址:8030</value>
</property>
<!--ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务 -->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>host1的网址:8031</value>
</property>
<!-- ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令 -->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>host1的网址:8033</value>
</property>
<!-- ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>host1的网址:8088</value>
</property>
#vi /etc/hadoop/slave
将所有需要配置成slave类型的机器的机器名写在其内部即可.
注意:每个机器名占一行。
master 对应 host1
slave1 对应 host2
slave2 对应 host3
# vi /etc/hadoop/master
Master文件存的是的secondarynamenode(snn)列表
host2
//将配置好的 jdk1.7.0_79 和 hadoop 发送到其余的集群
jdk 发送
# scp -r /opt/modules/jdk1.7.0_79 host2:/opt/modules/
# scp -r /opt/modules/jdk1.7.0_79 host2:/opt/modules/
Hadoop 发送
# scp -r /opt/modules/hadoop-2.7.5 host2:/opt/modules/
# scp -r /opt/modules/hadoop-2.7.5 host2 :/opt/modules/
//启动Hadoop集群
//启动之前先格式化,只需要一次即可
# hadoop namenode -format
//启动 namenode、datanode、ResourceManager、NodeManager节点
在 /opt/modules/hadoop-2.7.5/sbin/ 目录下
# ./start-dfs.sh
# ./start-yarn.sh
全部启动命令: ./start-all.sh