一:Hadoop上block的大小的规定
在说hadoop上block规定的时候要提前说一下,就是在hadoop中,文件在物理上是分块储存(也就是block),块的大小可以通过配置参数(dfs.blocksize)来贵定,默认大小在hadoop2.x中是128M,老版本中是64M
那么我们为什么要定义block的大小呢,在运算的过程中,寻址时间为传输时间的1%的时候为最佳状态,也就是说我们要使机器运行的更快可以通过定义block的大小来改善。
那么默认大小128M是怎么来的呢?
目前磁盘普遍的传输速率是100M/s,寻址时间约为10ms,传输时间约为1s,取整后为128M
块的设置不能设置太大,也不能设置太小
1、hdfs的块设置太小,会增加寻址时间,程序一直在找块开始的位置
2、如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需要的时间,导致程序在出来这块数据的时候会变得非常慢。
总结:HDFS块大小的设置主要取决于磁盘的传输速率
二:Hadoop常用的shell命令
这里使用的命令如果没有注释就是在解压后的hadoop包下进行操作
(0)启动hadoop集群:
sbin/start-dfs.sh
sbin/start-yarn.sh(在resourcemanager的机器上进行启动命令)
(1)-help:输出这个命令参数
hadoop fs -help rm
(2)-ls:显示目录信息
hadoop fs -ls /
(3)-mkdir:在hdfs上创建目录
hadoop fs -mkdir -p(创建多级目录需要加) /tengxun/lianmeng
(4)-moveFromLocal:从本地剪切粘贴到HDFS
touch yasuo.txt
hadoop fs -moveFromLocal ./yasuo.txt /tengxun/lianmeng
(5)-appendToFile:追加一个文件到已存在的文件末尾(在hadoop中是没有修改这个操作的,只能进行追加)
touch ruiwen.txt
vim ruiwen.txt
写入
im your dad
hadoop -fs -appendToFile ruiwen.txt /tengxun/lianmeng/yasuo.txt
(6)-cat:显示文件内容
hadoop fs -cat /tengxun/lianmeng/yasuo.txt
(7)-chgrp(修改所有者的组)、-chomd(修改所有者的权限)、chown(修改所有者):Linux文件系统中的用法一样,修改文件所属权限
hadoop fs -chomd 666 /tengxun/lianmeng/yasuo.txt
hadoop fs -chown liniuxpawn:liniuxpawn /tengxun/lianmeng/yasuo.txt
(8)-copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去
hadoop fs -copyFromLocal README.txt
(9)-copyToLocal:从HDFS拷贝到本地
hadoop fs -copyToLocal /tengxun/lianmeng/yasuo.txt ./
(10)-cp:从HDFS的一个文件拷贝到HDFS的另一个路径下
hadoop fs -cp /tengxun/lianmeng/yasuo.txt /yanque.txt
(11)-mv:在HDFS目录中移动文件
hadoop fs -mv /yanque.txt /tengxun/lianmeng/
(12)-get:等同于copyToLocal,就是从HDFS下载到本地
hadoop fs -get /tengxun/lianmeng/yasuo.txt ./
(13)-getmerge:合并下载多个文件,比如HDFS的目录 /aaa/下有多个文件:log.1,log.2,log.3…
hadoop fs -getmerge /tengxun/lianmeng/* ./yinxionglianmeng.txt
(14)-put:等同于copyFromLocal
hadoop fs -put ./yinxionglianmeng.txt /tengxun/lianmeng/
(15)-tail:显示一个文件的末尾
hadoop fs -tail /tengxun/lianmeng/yasuo.txt
(16)-rm:删除文件或文件夹
hadoop fs -rm /tengxun/lianmeng/yasuo.txt
hadoop fs -rmr(递归删除) /tengxun/lianmeng/
(17)-rmdir:删除空目录
hadoop fs -rmdir /tengxun
(18)-du:统计文件夹的信息
hadoop fs -du / (默认是显示目录下的文件以及文件夹以及文件夹下的所有文件,单位是B)
hadoop fs -du -h / (在原有的基础上修改了单位,可以更直观的查看大文件的大小)
hadoop fs -du -h -s / (直接查看路径下此文件的大小)
(19)-setrep:设置hdfs中文件的副本数量
hadoop fs -setrep 3 /tengxun/lianmeng/yasuo.txt
三:HDFS客户端操作
(1)客户机环境准备
准备好在windows环境下编译好的hadoop源码
这里有文章具体讲述了如何在windows环境下编译hadoop源码
windows10下编译hadoop源码
windows7下编译hadoop源码
配置hadoop的环境变量
HADOOP_HOME
path
打开eclipse配置maven
1.创建一个maven简单的项目
在pom.xml文件里写入
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
</dependency&g