运行 bin/目录的 hadoop 命令,可以查看 Haoop 所有支持的操作及其用法,这里以几个简单的操作为例。建立目录:
[hadoop@server1 hadoop-1.2.1]$ bin/hadoop dfs -mkdir testdir
在 HDFS 中建立一个名为 testdir 的目录,复制文件
[hadoop@server1 hadoop-1.2.1]$ bin/hadoop dfs -put /etc/passwd passwd
把 本 地 文 件 /etc/passwd 文件 拷 贝 到 HDFS 的 根 目 录 /user/hadoop/ 下 , 文 件 名 为passwd,查看现有文件:
我们在浏览器窗口可以这样操作:
点击Browse the filesystem进入
点击user进入hadoop目录
便可以看见我们刚才所上传的文件和所创建的目录了
运行发行版提供的示例程序:
[hadoop@server1 hadoop-1.2.1] $ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
查看输出文件:
将输出文件从分布式文件系统拷贝到本地文件系统查看:
[hadoop@server1 hadoop-1.2.1]$ bin/hadoop fs -get output output/
[hadoop@server1 hadoop-1.2.1] $ cat output/*
或者
在分布式文件系统上查看输出文件:
完成全部操作后,停止守护进程:
更多用法参考[hadoop@server1 hadoop-1.2.1]$ bin/hadoop fs -help
hadoop 在线添加节点:
1. 在新增节点上安装 jdk,并创建相同的 hadoop 用户,uid 等保持一致
2. 在 conf/slaves 文件中添加新增节点的 ip
3. 同步 master 上 hadoop 所有数据到新增节点上,路径保持一致
4. 在新增节点上启动服务:
5. 均衡数据:
1)如果不执行均衡,那么 cluster 会把新的数据都存放在新的 datanode 上,这样会降低 mapred的工作效率
2)设置平衡阈值,默认是 10%,值越低各节点越平衡,但消耗时间也更长
bin/start-balancer.sh -threshold 5
再次刷新时会发现第三个节点成功加上
hadoop 在线删除 datanode 节点:
1. 在 master 上修改 conf/mapred-site.xml
<property>
<name>dfs.hosts.exclude</name>
<value>/home/hadoop/hadoop-1.0.4/conf/datanode-excludes</value>
</property>
2. 创建 datanode-excludes 文件,并添加需要删除的主机,一行一个
192.168.122.6
3. 在 master 上在线刷新节点
$ bin/hadoop dfsadmin -refreshNodes
此操作会在后台迁移数据,等此节点的状态显示为 Decommissioned,就可以安全关闭了。
4. 你可以通过以下命令查看 datanode 状态
$ bin/hadoop dfsadmin -report
在做数据迁移时,此节点不要参与 tasktracker,否则会出现异常。
Hadoop 在线删除 tasktracker 节点:
1. 在 master 上修改 conf/mapred-site.xml
<property>
<name>mapred.hosts.exclude</name>
<value>/home/hadoop/hadoop-1.0.4/conf/tasktracker-excludes</value>
</property>
2. 创建 tasktracker-excludes 文件,并添加需要删除的主机名,一行一个
3. 在 master 上在线刷新节点
$ bin/hadoop mradmin -refreshNodes
4. 登录 jobtracker 的网络接口,进行查看。