一、Hadoop的目录结构解析
目录名 | 解释 |
---|---|
bin | 可执行程序 |
etc | 配置文件 |
include | C/C++ 头文件 |
lib | 自身库文件 |
libexec | 自身程序的配置文件 |
sbin | 常用操作脚本(启动、关闭)组件 |
share | 包含了帮助文档和jar包支持库等. |
二、Hadoop的运行模式
1. 本地模式 (Single Node Cluster)单节点集群用户调试.
-
-
编辑hadoop配置文件
vi /etc/hadoop/hadoop.env.sh 找到 export JAVA_HOME 将${JAVA_HOME} 替换成 JDK真实路径
-
-
-
测试运行一个WordCount例子
-
A.在hadoop根目录新建一个文件夹
mkdir input cd input vi 1.txt #写入内容 hello hadoop hello java hello hdfs hadoop java
-
B.运行官方自带例子,进行wordcount统计
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount input output
-
-
总结:本地模式适合调试MR程序.没有HDFS,没有Yarn.计算本地文件,并输出结果到本地.
所谓的伪分布式,指的就是用一台计算机模拟集群。(只有一个节点的分布式)
-
HDFS的伪分布式
-
A. 修改etc/hadoop/core.site.xml配置文件
<property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property>
设置文件系统为默认文件系统,端口号为9000
-
B.修改etc/hadoop/hdfs.site.xml配置文件
<property> <name>dfs.replication</name> <value>1</value> </property>
设置HDFS文件系统的副本数为1.默认值为3
-
C.格式化NameNode.(第一次运行HDFS必须要格式化一次文件系统.以后再次运行,千万不要执行这个命令.)
hdfs namenode -format
-
D.启动NameNode
hadoop-daemon.sh start namenode
-
E.查看启动状态.
jps
-
F.启动DataNode
hadoop-daemon.sh start datanode
全部完毕之后:
http://IP地址:50070 (WEB服务的端口号不是9000)
当多次格式化namenode会造成无法启动datanode启动失败.
nn与dn通过一串ID进行关联,重新format NN之后,clusterID就会更换
vi /tmp/hadoop-dt/dfs/name/current/VERSION 修改ID 保持一致 head 查看文件头 内容 tail 查看文件尾 内容 cat 查看内容 tmp文件夹暂时会有安全隐患,后期要改.
jps 是打印java进程 kill pid #杀死PID对应的进程. ps 打印系统进程
第二次格式化NN,手工修复无法启动DN的错误
-
-
Yarn的伪分布
HDFS:NN,DN,2NN
Yarn:RM AM NM
-
A.修改yarn.env.sh 配置JAVA_HOME
-
B.修改yarn.site.xml
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!--DOC文档中复制-->
-
C.修改mapred.env.sh 配置JAVA_HOME
-
D.根据mapred.site 模板,复制出一个配置文件并,添加相关配置项
cp mapred.site.xml.template mapred.site.xml vi mapred.site.xml #增p-n-v <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
-
E.启动
yarn-daemon.sh start resourcemanager#启动rm yarn-daemon.sh start nodemanager #启动nm
rm的默认端口号是:8088
-
总结:
HDFS:
协议地址:9000
管理地址:50070
Yarn:
管理地址是:8088
*HDFS上传文件
hadoop fs -put 目录 位置
或
hdfs dfs -put 目录 位置
通过shell命令操作HDFS的文件上传下载,删除等操作称之为hdfs shell.
MapReduce运行wordcount
hadoop jar /opt/module/hadoop-2.10.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar wordcount /input /output
HDFS 删除文件的shell
hadoop fs -rm -r /hdfspath
HDFS 查看文件内容
hadoop fs -cat /hfdspath
系统默认的data存储在tmp目录,tmp目录会在定时策略下情况文件夹内所有内容.
所以hadoop的data存储必须存储在自定义的非tmp目录下
#将data存储位置更换到hadoop根目录下的data文件夹下 vi etc/hadoop/core.site.xml <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop2.x.x/data</value> </property> 重新执行 hdfs namenode -format 重启各个服务.
-