查看命令用法

cd /usr/local/hadoop
./sbin/start-dfs.sh

查看支持的命令

./bin/hdfs dfs

查看具体的命令用法

./bin/hdfs dfs help put

HDFS操作

目录操作

  1. 为Hadoop创建用户目录
./bin/hdfs dfs -mkdir -p /user/hadoop
  1. 查看当前目录,创建新目录
  2. 删除新建的目录

hadoop 编码集 hadoop编程入门教程_大数据

文件操作

  1. 新建文件
    用vim编辑,最后以:wq命令结束
  2. hadoop 编码集 hadoop编程入门教程_hadoop 编码集_02

  3. 上传文件并检查内容
    将本地的myTest.txt上传到input中,再用-cat查看文本文件内的内容
  4. hadoop 编码集 hadoop编程入门教程_hadoop_03

  5. 下载到本地
  6. hadoop 编码集 hadoop编程入门教程_大数据_04


  7. hadoop 编码集 hadoop编程入门教程_hdfs_05

  8. 在HDFs中复制文件
  9. hadoop 编码集 hadoop编程入门教程_大数据_06

编写一个可以和HDFS相交互的Java应用程序

  1. 启动sclipse
cd /usr/local/eclipse
./eclipse

hadoop 编码集 hadoop编程入门教程_hdfs_07


hadoop 编码集 hadoop编程入门教程_hadoop_08


2. 新建工程

hadoop 编码集 hadoop编程入门教程_hadoop_09


3.导入jar包

hadoop 编码集 hadoop编程入门教程_hadoop 编码集_10

编程

1.新建类,拷贝代码到文件中

hadoop 编码集 hadoop编程入门教程_hadoop_11


hadoop 编码集 hadoop编程入门教程_hadoop 编码集_12

  1. 确保启动hadoop
  2. 编译运行
    右键代码空白部分,以app形式运行
    文件大小为0,出错解决过程:(1) 第一次尝试,重新run一遍: 报一样的错误(2)第二次尝试,重启虚拟机:新的错误出现!
Name node is in safe mode

在Hadoop的目录下输入命令:
bin/hadoop dfsadmin -safemode leave

hadoop 编码集 hadoop编程入门教程_大数据_13

回到一开始的错误

(3)删除input、output

hadoop 编码集 hadoop编程入门教程_大数据_14


(4)重新上传文件

hadoop 编码集 hadoop编程入门教程_hadoop 编码集_15


console:

hadoop 编码集 hadoop编程入门教程_hadoop_16


ok了

(5)查看文件

cd /usr/local/hadoop
./bin/hdfs dfs -ls /user/hadoop
./bin/hdfs dfs -cat /user/hadoop/merge.txt

hadoop 编码集 hadoop编程入门教程_HDFS_17

应用部署

  1. 创建myapp目录
  2. 导出文件

    输入地址和方式

    打包完成

试运行

  1. 回到上一层目录
  2. 删除原来的merge文件(没有则不同)
  3. 运行jar
  4. 列出里面的文件
  5. 展示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

运行结果

hadoop 编码集 hadoop编程入门教程_HDFS_18


hadoop 编码集 hadoop编程入门教程_hadoop_19


微微有些瑕疵:输入的内容没有换行

总结

通过本次实验,我熟悉了HDFS的基本shell命令、HDFS的web管理,掌握了HDFS编程实践。
这次实验的难点集中在运行Hadoop程序上,一个是jar包的导入,一个是运行程序跑出结果。
运行中一定要多看console里的返回的信息,尽量靠自己的英文水平读懂,找到报错的意思。比如:

Name node is in safe mode

namenode在安全模式中,那么相应的处理方式类似关闭防火墙

path is not a file

路径不应该是文件,那就把原来建的input和output删掉
当然整个实验,最方便的检查方式也是最关键的地方就是清楚每次生成的文件,创建的文件到底在本地还是在系统中。