一.项目经验:
1.hdfs设置多目录
why:当hdfs存储空间紧张,需要对datanode节点进行磁盘扩展
what:(1)在 hdfs-site.xml 文件中配置多目录,注意新挂载磁盘的访问权限问题
<property> <name>dfs.datanode.data.dir</name> <value> file:///${hadoop.tmp.dir}/dfs/data1, file:///hd2/dfs/ data2, file:///hd3/dfs/data3, file:///hd4/dfs/data4 </value> </property>
(2)增加磁盘后,保证每个目录数据均衡
开启数据均衡命令: (当出现数据倾斜时也可以使用该命令)
bin/start-balancer.sh –threshold 10 (这样会使得hdfs各节点磁盘利用率相差不超过10%)
2.使用LZO压缩
why:在hadoop中使用lzo的压缩算法可以减小数据的大小和数据的磁盘读写时间,在HDFS中存储压缩数据,可以使集群能保存更多的数据,延长集群的使用寿命。不仅如此,由于mapreduce作业通常瓶颈都在IO上,存储压缩数据就意味这更少的IO操作,job运行更加的高效。
what:(1)将hadoop-lzo.jar放入hadoop/share/hadoop/common/
cd hadoop/share/hadoop/common/ , xsync hadoop-lzo-0.4.20.jar 分发hadoop-lzo.jar至其他服务器
(2)vim core-site.xml 别忘了分发core-site.xml
<property> <name>io.compression.codecs</name> <value> org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec, org.apache.hadoop.io.compress.SnappyCodec,
com.hadoop.compression.lzo.LzoCodec, com.hadoop.compression.lzo.LzopCodec </value>
</property> <property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
(3)重新启动hdfs集群 stop-all.sh , start-all.sh
3.基准测试
why:测试hdfs集群性能
what:
(1)测试写性能 测试内容:向 HDFS 集群写 10 个 128M 的文件
hadoop jar hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-client-j obclient-2.7.2-tests.jar TestDFSIO -write -nrFiles 10 -fileSize 128MB
(2)测试读性能 测试内容:读取 HDFS 集群 10 个 128M 的文件
hadoop jar hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-client-j obclient-2.7.2-tests.jar TestDFSIO -read -nrFiles 10 -fileSize 128MB
(3)删除测试生成的数据
hadoop jar hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapredu ce-client-jobclient-2.7.2-tests.jar TestDFSIO -clean