block大小的影响
HDFS中块的大小默认是128M,也可以根据节点的磁盘传输速率进行设置,通过设置dfs.blocksize来实现;
如果设置过大,则可能数据都存在一个节点上,在处理数据时,没法提现出分布式的特点,因为任务只在存有数据的这一个节点上执行,并且处理数据的时间也会变长;
如果设置过小,会占用namenode中的内存,并且寻址时间也会增加。
如何计算出128M
HDFS的寻址时间一般是10ms;
经过前人的大量测试发现,寻址时间为传输时间的1%时,为最佳状态,所以最佳传输时间为10ms/0.01=1000ms=1s,目前磁盘的传输速率普遍为100MB/s;计算出最佳block大小:100MB/s x 1s = 100MB,所以我们设定block大小128MB;实际在生产中,如果磁盘传输速率为200MB/s时,一般设定block大小为256MB,若磁盘传输速率为400MB/s时,一般设定block大小为512MB。
HDFS操作命令
hadoop fs -help
hadoop fs -moveFromLocal:移动本地文件到hdfs上(本地剪切)
hadoop fs -moveToLoacl:剪切hdfs上的文件到本地
hadoop fs -appendToFile:追加数据到hdfs中的一个文件末尾
hadoop fs -tail:查看文件尾部信息
hadoop fs -text:同-cat
hadoop fs -chown:和Linux一样,改变文件所属权限
hadoop fs -getmerge:获取多个文件合并(hadoop fs -getmerge /user/* /sum.log:第一个参数是hdfs目录,可以模糊匹配,第二个参数是本地文件的名称)
hadoop fs -df:统计文件系统的可用空间信息,(hadoop fs -df -h:格式化打印)
hadoop fs -du:统计文件夹或文件的大小
hadoop fs -test:
- -d 判断
是否是目录 - -e 判断
是否存在 - -f 判断
是否是个文件 - -s 判断内容是否大于0bytes ,大于0为真
- -z 判断内容是否等于0bytes,为0真