hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager
hdfs dfsadmin -repor
检查集群的状态yarm rmadmin
start-balancer.sh -threshold 5
(单个节点的使用率跟平均节点使用率的差值)hdfs fsck /
来扫描确认文件是否正常hdfs dfs -setrep -w 3 -R /lin
(副本数可大于节点数,不要对根目录进行该操做)节点硬件故障或者任务运行在该节点比较吃力java
下线前要先确保没有任务在运行,不然会下线得特别慢node
背景:存在单个Namenode负载过大的问题apache
分配
避免相互干扰bootstrap
配置步骤服务器
core-site.xml网络
修改core-site.xml配置负载均衡
添加配置指向cmt.xml <configuration xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include href="cmt.xml"/> <property> <name>fs.defaultFS</name> <value>viewfs://nsX</value> </property> <property> <name>hadoop.tmp.dir</name> <value>$HADOOP_HOME/tmp</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>$HADOOP_HOME/journalnode/data</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>slave1:2181,slave2:2181,hadoop04:2181</value> </property> </configuration>
cmt.xml
配置虚拟路径和物理路径的映射关系运维
//将集群中的/view_ns1目录挂载到namenode1中的根目录 //也就是说以后/view_ns1下文件的操做都仅跟namenode1有关 <property> <name>fs.viewfs.mounttable.nsX.link./view_ns1</name> <value>hdfs://ns1/</value> // 按照规划master就是namenode1 </property> <property> <name>fs.viewfs.mounttable.nsX.link./view_ns2</name> <value>hdfs://ns2/</value> // 按照规划master就是namenode2 </property>
hdfs-site.xml
配置两个命名服务以及rpc、http服务地址ssh
<property> <name>dfs.nameservices</name> <value>ns1,ns2</value> </property> ## 配置nameservice1的ha <property> <name>dfs.ha.namenodes.ns1</name> <value>nn1,nn2</value> </property> ## 配置nameservice2的ha <property> <name>dfs.ha.namenodes.ns2</name> <value>nn3,nn4</value> </property> ## 配置这四个namenode的RPC通讯端口 <property> <name>dfs.namenode.rpc-address.ns1.nn1</name> <value>master:9000</value> </property> <property> <name>dfs.namenode.rpc-address.ns2.nn3</name> <value>slave1:9000</value> </property> <property> <name>dfs.namenode.rpc-address.ns1.nn2</name> <value>hadoop04:9000</value> </property> <property> <name>dfs.namenode.rpc-address.ns2.nn4</name> <value>slave2:9000</value> </property> ## 配置这四个namenode的HTTP通讯端口 <property> <name>dfs.namenode.http-address.ns1.nn1</name> <value>master:50070</value> </property> <property> <name>dfs.namenode.http-address.ns2.nn3</name> <value>slave1:50070</value> </property> <property> <name>dfs.namenode.http-address.ns1.nn2</name> <value>hadoop04:50070</value> </property> <property> <name>dfs.namenode.http-address.ns2.nn4</name> <value>slave2:50070</value> </property> ## 配置四个namenode的编辑日志存放地址 <property> <name>dfs.namenode.shared.edits.dir</name> ## ns1的nn1和nn2用这个值 <value>qjournal://hadoop04:8485;slave1:8485;slave2:8485/ns1</value> ## ns2的nn3和nn4用这个值 <value>qjournal://hadoop04:8485;slave1:8485;slave2:8485/ns2</value> </property> ## 配置错误恢复 <property> <name>dfs.client.failover.proxy.provider.ns1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfigureFailoverProxyProvider</value> </property> <property> <name>dfs.client.failover.proxy.provider.ns2</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfigureFailoverProxyProvider</value> </property> ## 配置ha的fence <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/hadoop/.ssh/id_rsa</value> </property> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property>
启动服务ide
访问hdfs
经过 hdfs dfsadmin -repor 检查集群节点状态
hdfs fsck / 检查文件是否都正常
启动
hadoop-daemons.sh --hostnames 'slave1 slave2' start namenode
hadoop-daemons.sh start datanode //默认是启动全部的
hadoop-daemons.sh --hostnames 'slave1 slave2 slave*' start zkfc
将hadoop经常使用的运维操做记录下来,方便从此的维护工做