1分布式集群规划
ip | 131 | 132 | 133 |
---|---|---|---|
name | namenode.hay.com | worker1.hay.com | worker2.hay.com |
HDFS | NameNode | DataNode | DataNode SecondaryNamenode |
YARN | ResourceManager | NodeManager | NodeManager |
MR | JobHistoryServer |
2 配置
2.1 机器hostname及IP,以机器131为例
- 关闭防火墙
sudo systemctl stop firewalld.service
- 修改hostname,编辑 /etc/hostname
namenode.hay.com
- 修改IP,编辑 /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=namenode.hay.com
GATEWAY=192.168.176.2
编辑 /etc/sysconfig/network-scripts/ifcfg-ens33
#BOOTPROTO=dhcp
IPADDR=192.168.176.131
DNS1=192.168.176.2
其他两台机器按照上面步骤配置
- 主机名与IP地址映射,编辑 /etc/hosts
192.168.176.131 namenode.hay.com namenode
192.168.176.132 worker1.hay.com worker1
192.168.176.133 worker2.hay.com worker2
2.2 hadoop配置
- 配置namenode,编辑 etc/hadoop/core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.2/data/tmp/hadoop-${user.name}</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode.hay.com:8020</value>
</property>
- 配置secondarynamenode,编辑 etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>worker2.hay.com:9868</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
- 配置datanode和NodeManager, 编辑 etc/hadoop/workers
worker1.hay.com
worker2.hay.com
- 配置ResourceManager,编辑 etc/yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>namenode.hay.com</value>
</property>
<!-- 日志聚合-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
- 配置JobHistoryServer,编辑 etc/mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>namenode.hay.com:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>namenode.hay.com:19888</value>
</property>
- 复制配置到另外两台机器
scp -rp etc/hadoop/* hay@worker1.hay.com:/opt/module/hadoop-3.1.2/etc/hadoop/
scp -rp etc/hadoop/* hay@worker2.hay.com:/opt/module/hadoop-3.1.2/etc/hadoop/
- 格式化namenode
bin/hdfs namenode -format
2.3 启动HDFS组件
方法一:
在namenode主机启动namenode
bin/hdfs --daemon start namenode
在各个worker主机启动datanode
bin/hdfs --daemon start datanode
在worker2主机启动secondarynamenode
bin/hdfs --daemon start secondarynamenode
方法二:
- 配置ssh无密登陆
在namenode主机中执行
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
按Enter默认选项,生成公私钥对。
- 复制公钥到各个主机,包括当前主机
ssh-copy-id -i ~/.ssh/id_rsa.pub hay@主机名
- 启动所有主机上hdfs组件,在namenode主机上执行
sbin/start-dfs.sh
- 查看namenode状态
http://namenode.hay.com:9870
2.4 启动yarn组件
方法一:
- 在namenode上启动ResourceManager
bin/yarn --daemon start resourcemanager
- 在各个worker主机上启动nodemanager
bin/yarn --daemon start nodemanager
方法二:
在namenode配置ssh无密登陆,包括当前主机
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub hay@主机名
在配置了workers和ssh免密登陆的情况下,在namenode主机使用启动yarn组件
sbin/start-yarn.sh
- web UI
http://namenode.hay.com:8088
2.5 启动historyserver
- 在namenode主机上启动JobHistoryServer
bin/mapred --daemon start historyserver
3 运行实例
3.1 在HDFS上创建用户
bin/hdfs dfs -mkdir -p /user/hay
3.2 输入文件
bin/hdfs dfs -mkdir -p mr/test1
bin/hdfs dfs -put etc/hadoop/ mr/test1/input
3.3 运行
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.2.jar grep mr/test1/input mr/test1/output 'dfs[ a-z.]+'
4 关闭
4.1 关闭mapred
bin/mapred --daemon stop historyserver
4.2关闭yarn
方法一
- 在worker1上关闭resourcemanager
bin/yarn --daemon stop resourcemanager
- 在各个worker上关闭nodemanager
bin/yarn --daemon stop nodemanager
方法二
在配置了worker和ssh免密登陆后,在worker1执行
sbin/stop-yarn.sh
即可关闭所有的nodemanager和resourcemanager
4.3关闭HDFS
方法一
- 关闭namenode
bin/hdfs --daemon stop namenode
- 在各个worker上关闭datanode
bin/hdfs --daemon stop datanode
方法二
在配置了worker和ssh免密登陆后,在namenode主机上执行
sbin/stop-dfs.sh