一 Hadoop组成
Haddop HDFS:一个高可靠,高吞吐量的分布式文件系统
Hadoop MapReduce:一个分布式的离线并行计算框架
Hadoop YARN:作业调度和资源管理的框架
Hadoop Common:支持其他模块的工具模块
- HDFS架构概述
NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性,以及每个文件的块列表和块所在的DataNode等。
DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照信息。
- Yarn架构概述
ResourceManager(rm):处理客户端请求,启动/监控ApplicationMaster,监控NodeManager,资源分配与调度。
NodeManager(nm):单个节点上的资源管理,处理来自ResourceManager的命令,处理来自ApplicationMaster的命令。
ApplicationMaster:数据切分,为应用程序申请资源,并分配给内部任务,任务监控与容错。
Container:对任务运行环境的抽象,封装了CPU,内存等多维资源以及环境变量,启动命令
- MapReduce
Map阶段并行处理输入数据;Reduce阶段对Map的结果进行汇总。
二. Hadoop环境搭建
1. 虚拟机环境:
/etc/sysconfig/network-scripts/ifcfg-ens33: 配置IP
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=8f72feb8-a1ff-400d-9740-7e1aba867671
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.95.101
NETMASK=255.255.255.0
PREFIX=24
GATEWAY=192.168.95.1
#DNS1=192.168.95.1
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no
/etc/sysconfig/network-scripts:
HOSTNAME=hadoop101
/etc/hosts:
192.168.95.103 hadoop103
192.168.95.101 hadoop101
192.168.95.102 hadoop102
2. Hadoop安装步骤
- 进入Hadoop安装包路径下
- 解压安装到文件/opt/module下
- 配置环境变量:export HADOOP_HOME=/opt/module/hadoop
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin
export PATH= P A T H : PATH: PATH:HADOOP_HOME/sbin
配置hadoop-env.sh:export JAVA_HOME=/opt/module/jdkXXX - 将Hadoop添加到环境变量
- 修改文件所有者
- 切换用户
3. 官方案例实操
$ mkdir input
$ cp etc/hadoop/*.xml input/
$ ls input/
$ hadoop jar share/hadoopmapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output ‘dfs[a-z.]+’
4. 伪分布式
配置集群:
1)hadoop-env.sh
export JAVA_HOME=/opt/module/jdkXXX
2) core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
3)hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
启动集群:
1)格式化namenode(第一次启动时格式化,以后就不要总格式化)
$ sbin/hdfs namenode -format
2) 启动namenode,datanode
$ sbin/hadoop-daemon.sh start/stop namenode
$ sbin/hadoop-daemon.sh start/stop datanode
查看集群是否启动成功:jps命令
可以在logs目录下查看启动日志
http://hadoop101:9870/:查看HDFS文件系统
三. HDFS常用命令
$ bin/hdfs dfs -mkdir -p /user/atguigu/input
$ bin/hdfs dfs -put wcinput/wc.input /user/atguigu/input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input/ /user/atguigu/output
$ hadoop fs -get /user/atguigu/output/part ./wordcount/