查看命令用法
cd /usr/local/hadoop
./sbin/start-dfs.sh
查看支持的命令
./bin/hdfs dfs
查看具体的命令用法
./bin/hdfs dfs help put
HDFS操作
目录操作
- 为Hadoop创建用户目录
./bin/hdfs dfs -mkdir -p /user/hadoop
- 查看当前目录,创建新目录
- 删除新建的目录
文件操作
- 新建文件
用vim编辑,最后以:wq
命令结束 - 上传文件并检查内容
将本地的myTest.txt上传到input中,再用-cat查看文本文件内的内容 - 下载到本地
- 在HDFs中复制文件
编写一个可以和HDFS相交互的Java应用程序
- 启动sclipse
cd /usr/local/eclipse
./eclipse
2. 新建工程
3.导入jar包
编程
1.新建类,拷贝代码到文件中
- 确保启动hadoop
- 编译运行
右键代码空白部分,以app形式运行
文件大小为0,出错!解决过程:(1) 第一次尝试,重新run一遍: 报一样的错误(2)第二次尝试,重启虚拟机:新的错误出现!
Name node is in safe mode
在Hadoop的目录下输入命令:
bin/hadoop dfsadmin -safemode leave
回到一开始的错误
(3)删除input、output
(4)重新上传文件
console:
ok了
(5)查看文件
cd /usr/local/hadoop
./bin/hdfs dfs -ls /user/hadoop
./bin/hdfs dfs -cat /user/hadoop/merge.txt
应用部署
- 创建myapp目录
- 导出文件
输入地址和方式
打包完成
试运行
- 回到上一层目录
- 删除原来的merge文件(没有则不同)
- 运行jar
- 列出里面的文件
- 展示merge.txt
cd /usr/local/hadoop
./bin/hdfs dfs -rm /user/hadoop/merge.txt
./bin/hadoop jar ./myapp/HDFSExample.jar
./bin/hdfs dfs -ls /user/hadoop
./bin/hdfs dfs -cat /user/hadoop/merge.txt
运行结果
微微有些瑕疵:输入的内容没有换行
总结
通过本次实验,我熟悉了HDFS的基本shell命令、HDFS的web管理,掌握了HDFS编程实践。
这次实验的难点集中在运行Hadoop程序上,一个是jar包的导入,一个是运行程序跑出结果。
运行中一定要多看console里的返回的信息,尽量靠自己的英文水平读懂,找到报错的意思。比如:
Name node is in safe mode
namenode在安全模式中,那么相应的处理方式类似关闭防火墙
path is not a file
路径不应该是文件,那就把原来建的input和output删掉
当然整个实验,最方便的检查方式也是最关键的地方就是清楚每次生成的文件,创建的文件到底在本地还是在系统中。