查看hdfs 大小
hdfs dfs -df -h
刷新集群:
hadoop dfsadmin -refreshNodes
一定要设置负载均衡
./start-balancer.sh -threshold 1
start-balancer.sh可以执行-threshold参数。
-threshold参数是指定平衡的阈值。
-threshold的默认是10,即每个datanode节点的实际hdfs存储使用量/集群hdfs存储量
举例:
datanode hdfs使用量1.2G;
集群总hdfs存储量10T即10000G;
则t值为1.2/10000 = 0.00012;
当执行balance的-t参数小于0.00012时,集群进行balance;
命令为:start-balancer.sh -threshold 0.0001
注:
- balance命令可以在namenode或者datanode上启动;
可以随时停止balance命令。
balance的默认带宽是1M/s。
参考:
http://www.cnblogs.com/BYRans/p/5128162.html
http://www.ibm.com/developerworks/cn/data/library/bd-1506-hdfsdatabalance/index.html
给磁盘预留170G,hdfs节点的大小是磁盘空间减去170G,单位是字节
<property>
<name>dfs.datanode.du.reserved</name>
<!-- reserved space in bytes -->
<value>170000000000</value>
<description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
</description>
</property>
Could not find or load main class
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/share/hadoop/common:$HADOOP_HOME/share/hadoop/common/lib:$HADOOP_HOME/share/hadoop/yarn:$HADOOP_HOME/share/hadoop/mapreduce:$HADOOP_HOME/share/hadoop/hdfs
no proxyserver to stop
以前的pid被保留,而当前的pid找不到了
解决方法:通过jps获取各个进程的pid
http://www.aboutyun.com/thread-11610-1-1.html
hadoop-env.sh
这个文件主要配置如java路径、hadoop配置文件目录、日志目录等环境变量,最简单的配置是只修改java路径(JAVA_HOME)而不修改其他。不过今天我想重启集群时发现stop-hdfs.sh脚本无法关闭集群,网上找到的原因是集群进程的pid号默认放在/tmp目录下导致pid号的定期删除,而管理脚本找不到pid号导致管理失败。于是考虑将pid放到自己定义的目录下。hadoop-env.sh文件中定义了一个HADOOP_PID_DIR变量,于是可以简单地在.bashrc文件中加入该变量即可。如果不行,在hadoop-env.sh中直接定义该变量。
yarn-env.sh
这个文件也是设置如java路径等环境变量。可以在文件中或者直接在.bashrc中设置如JAVA_HOME或者YARN_PID_DIR(设置pid的存放目录)等变量。pid默认存放在/tmp目录下,丢失也会导致stop-yarn.sh等脚本的失效。(stop-yarn.sh脚本实际上调用的是yarn-daemon.sh,其中可以发现YARN_PID_DIR变量)
参考:
https://segmentfault.com/a/1190000000719467
http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/ClusterSetup.html
https://codingforfun.gitbooks.io/hadoop-2-3-0-/content/hadoop_230_ji_qun_an_zhuang_bu_shu.html
HDFS 和 YARN 的 HA 故障切换
https://blog.youkuaiyun.com/u011414200/article/details/50336735