配置伪分布式
- hadoop-env.sh
$ cd /opt/module/hadoop/etc/hadoop/
$ vim hadoop-env.sh
# export JAVA_HOME=${JAVA_HOME}改为:
export JAVA_HOME=/opt/module/jdk
- core-site.xml
<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop/data/tmp</value>
</property>
</configuration>
- hdfs-site.xml
<configuration>
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
格式化namenode
- 格式化NameNode(第一次启动需要格式化,
以后就不要总格式化
)
$ cd /opt/module/hadoop
$ bin/hdfs namenode -format # 重点
启动/停止HDFS
注意:
jps
是JDK中的命令,因此需要安装JDK才能使用jps
- 启动
$ sbin/start-dfs.sh
$ jps
- 停止
$ sbin/stop-dfs.sh
$ jps
查看HDFS
- 通过界面查看HDFS文件系统
localhost:50070
- 也可以通过命令查看
$ hadoop fs -lsr /
日志位置
说明:在遇到Bug时,往往会根据日志的提示信息去分析问题、解决问题。
$ pwd
/opt/module/hadoop
$ cd logs/
# 主要是log后缀结尾文件
xx-namenode-xx.log
xx-datanode-xx.log
# 查看日志
$ cat hadoop-hadoop-datanode-hadoop.log
wordcount案例
- 在HDFS文件系统上创建一个input文件夹
$ hadoop fs -mkdir -p /user/hadoop/input
- 将测试文件内容上传到文件系统上
$ hadoop fs -put wcinput/wc.input /user/hadoop/input/
# wc.input的内容如下:
hadoop yarn
hadoop mapreduce
spark scala
spark hadoop
- 查看上传的文件是否正确
$ hadoop fs -ls /user/hadoop/input/
$ hadoop fs -cat /user/hadoop/input/wc.input
- 运行MapReduce程序
$ hadoop fs jar /opt/module/hadoop/share/hadoop/hadoop-mapreduce-examples-2.6.0-cdh5.15.1.jar wordcount /user/hadoop/input/ /user/hadoop/output # 输入、输出目录
- 查看输出结果
$ hadoop fs -cat /user/hadoop/output/*
- 将测试文件内容下载到本地
$ hadoop fs -get /user/hadoop/output/part-r-00000 ./wcoutput/ # 确保本地存在wcoutput这个目录
$ cat wcoutput/* # 查看计算结果
- 删除输出结果
$ hadoop fs -rm -r /user/hadoop/output