一、在伪分布式基础上搭建,伪分布式搭建参见VM上Hadoop3.1伪分布式模式搭建html
二、虚拟机准备,本次集群采用2.8.3版本与3.X版本差异不大,端口号全部差异java
192.168.44.10 vmhome10.com 192.168.44.11 vmhome11.com 192.168.44.12 vmhome12.com
三、关闭防火墙,由于须要打开的端口太多,测试的环境,为了不干扰先关闭防火墙node
systemctl stop firewalld
四、三台虚机之间打开ssh免密登陆,帐户hadoopweb
ssh-keygen -t rsa 生产密钥 ssh-copy-id 192.168.44.10 发布密钥
五、配置JAVA_HOME后端
在${HADOOP_HOME}/etc/hadoop目录下的三个脚本 hadoop-env.sh yarn-env.sh mapred-env.sh 都须要配置JAVA_HOME变量,全路径: export JAVA_HOME=/home/java/jdk1.8.0_201
六、三个节点分配职能浏览器
vmhome10.com:NameNode,DataNode,NodeManager #NameNode与SecondaryNameNode不能在一个节点上 vmhome11.com:DataNode,ResourceManager,NodeManager #ResourceManager须要单独一个节点 vmhome12.com:SecondaryNameNode,DataNode,NodeManager #DataNode能够每一个节点都放一个
七、集群配置服务器
7.1 core-site.xmlapp
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://vmhome10.com:9000</value> <description>HDFS的URI,文件系统://namenode标识:端口号</description> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop/data-2.8.3/tmp</value> <description>namenode上本地的hadoop临时文件夹</description> </property> </configuration>
7.2 hdfs-site.xmlssh
<configuration> <property> <name>dfs.replication</name> <value>3</value> <description>副本个数,配置默认是3,应小于datanode机器数量</description> </property> <property> <name>dfs.namenode.name.dir</name> <value>/opt/hadoop/data-2.8.3/dfs/name</value> <description>namenode在本地存储hdfs名字空间元数据 </description> </property> <property> <name>dfs.datanode.data.dir</name> <value>/opt/hadoop/data-2.8.3/dfs/data</value> <description>datanode上数据块的物理存储位置</description> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>vmhome12.com:50090</value> <description>指定Hadoop辅助名称节点主机配置,注意3.x后端口已经改变</description> </property> </configuration>
7.3 yarn-site.xmlwebapp
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>vmhome11.com</value>
<description>yarn的主机,运行resoucemanager</description> </property> </configuration>
7.4 mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
7.5 历史服务配置
mapred-site.xml
<!-- 历史服务器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>vmhome12.com:10020</value> </property> <!-- 历史服务器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>vmhome12.com:19888</value> </property>
7.6 日志汇集
yarn-site.xml
<!-- 日志汇集功能使能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 日志保留时间设置7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
八、slaves
#集群,群起方式须要配置全部的节点在这个文件 vmhome10.com vmhome11.com vmhome12.com
九、复制配置到其余节点
scp -r hadoop-2.8.3/ hadoop@vmhome11.com:/opt/hadoop/ scp -r hadoop-2.8.3/ hadoop@vmhome12.com:/opt/hadoop/
十、群起集群
在NameNode的主机节点上执行(首次启动集群前,不要忘记先格式化namenode) start-dfs.sh 在ResourceManager的主机节点上执行 start-yarn.sh 注意:NameNode和ResourceManger若是不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。
10.2 启动日志服务
在vmhome12.com节点上启动服务 mr-jobhistory-daemon.sh start historyserver
十一、启停命令
各个服务组件逐一启动/中止 (1)分别启动/中止HDFS组件 hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode (2)启动/中止YARN yarn-daemon.sh start / stop resourcemanager / nodemanager 各个模块分开启动/中止(ssh免密) (1)总体启动/中止HDFS start-dfs.sh / stop-dfs.sh (2)总体启动/中止YARN start-yarn.sh / stop-yarn.sh
十二、web页面
用yarn的主机节点看yarn资源分配状况 http://192.168.44.11:8088/ 用Namnode的主机节点看hdfs的状况 http://192.168.44.10:50070/
1三、中止强制检查虚拟内存
在etc/hadoop/yarn-site.xml文件中,修改检查虚拟内存的属性为false,以下: <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> 目的是在开发环境用的虚拟机通常虚拟内存都不够hadoop的缺省配置,解除强制检查,免得测试程序的时候容器被kill。
1四、NameNode的本地目录能够配置成多个,且每一个目录存放内容相同,增长可靠性,若是配置在NFS上,可做为一份元数据备份。即配置的多个目录里都有相同的内容(元数据信息)。
在hdfs-site.xml里配置name的多个dir,之间用逗号分隔 <property> <name>dfs.namenode.name.dir</name> <value>file:///${hadoop.tmp.dir}/dfs/name1,file:///${hadoop.tmp.dir}/dfs/name2</value> </property>
1五、DataNode也能够配置成多个目录,每一个目录存储的数据不同。即:数据不是副本。
在hdfs-site.xml中: <property> <name>dfs.datanode.data.dir</name> <value>file:///${hadoop.tmp.dir}/dfs/data1,file:///${hadoop.tmp.dir}/dfs/data2</value> </property>
1六、退役节点
16.1 白名单方式,添加到白名单的主机节点,都容许访问NameNode,不在白名单的主机节点,都会被退出。
在etc/hadoop/下新增一个dfs.hosts文件,文件名可本身定义,在里面添加datanode节点 vi dfs.hosts vmhome10.com vmhome11.com vmhome12.com
在hdfs-site.xml配置文件里新增: <property> <name>dfs.hosts</name> <value>/opt/hadoop/etc/hadoop/dfs.hosts</value> </property> 而后分发到其余节点
刷新NameNode和ResourceManager hdfs dfsadmin -refreshNodes yarn rmadmin -refreshNodes
节点退役后,若是数据不均衡,能够用命令实现集群的再平衡数据。 start-balancer.sh
16.2 黑名单方式
在hadoop的etc/hadoop/下新增dfs.hosts.exclude文件 里面配置须要退役的节点: vi dfs.hosts.exclude vmhome9.com
在NameNode的hdfs-site.xml配置文件中增长dfs.hosts.exclude属性 <property> <name>dfs.hosts.exclude</name> <value>/opt/hadoop/etc/hadoop/dfs.hosts.exclude</value> </property>
刷新NameNode和ResourceManager hdfs dfsadmin -refreshNodes yarn rmadmin -refreshNodes
在Web浏览器,退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其余节点 等待退役节点状态为decommissioned(全部块已经复制完成),中止该节点及节点资源管理器。 注意:若是副本数是3,服役的节点小于等于3,是不能退役成功的,须要修改副本数后才能退役。
注意:不容许白名单和黑名单中同时出现同一个主机名称