一.Hadoop 2.x概述
1.hadoop的来源
Hadoop的产生主要来源于Google的三篇论文,如下:
GFS ——-> HDFS
MapReduce ————>MapReduce
BigTable ———–>Hbase
2.hadoop是什么 3.Hadoop的组成
Common:为其他Hadoop模块提供服务
HDFS:分布式文件系统,用于存储海量数据,主要特点是分布式(多主机存储)、安全性(副本数据,一般是3个副本),数据以block形式存储,数据块大小默认是128M
MapReduce:一个分布式的离线计算框架,对海量数据进行处理,主要思想是分而治之,将大数据集拆分成小的数据集,然后对每个数据集进行逻辑业务处理(map),合并统计数据结果(reduce)
Yarn:一个分布式资源管理和任务调度框架,例如管理整个集群资源(cpu数,内存)、分配调度集群的资源
4.HDFS系统架构图
hdfs是以主-从节点运行。
namenode:主节点,存放元数据信息,比如文件名、文件的目录结构、文件属性、每个文件块列表以及块所在的datanode等。**注意:**namenode的元数据一部分存放在内存中,一部分在磁盘上(例如:fsimage(镜像文件)和edits(编辑日志))
datanode:从节点,存放的是数据块以及数据块的校验和
Secondary NameNode: 用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照
5.Yarn架构图
ResourceManager:处理客户端请求;启动/监控ApplicationMaster;监控NodeManager;资源分配与调度
ApplicationMaster:数据切分;为应用程序申请资源,并分配给内部任务;任务监控与容错
NodeManager:单个节点上的资源管理;处理来自ResourceManager的命令;处理来自ApplicationMaster的命令
Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息
6.离线计算框架MapReduce
1)将计算过程分为两个阶段,map阶段和reduce阶段
map:并行处理输入数据(分)
reduce:对map结果进行合并(合)
2)shuffle连接map和reduce阶段
map task将数据写到本地磁盘
reduce task从每个task上读取一份数据
3)仅适合离线批处理
具有很好的容错性和扩展性
适合简单的批处理任务
4)缺点明显
启动开销大、过多使用磁盘导致效率较低
7.MapReduce on Yarn
1)client提交application给RM
2)RM为application找到一个NM,在其container中启动APP master
3)App master向RM注册
4)App master向RM申请application所需资源
5)App master通知NM启动container,将相应资源放入container中
6)NM启动Map或者Reduce任务
7)NM像APP master反应map或者reduce任务的状态或者进度
8)App master告知RM任务完成了,可以销毁了
二.Hadoop 2.x生态系统
Sqoop:关系型的数据库把数据存储到HDFS上。
Flume:日志文件的收集
MapReduce不是那么好写,门槛比较高,又有了Hive
Oozie:任务的管理与调度
Clodera Manager:整个集群资源的管理界面
Zookeeper:协作框架
Hue:web框架
三.Hadoop的环境配置
1.环境准备
1)删除系统默认的Java版本(需要切换到root)
$>rpm -qa|grep java //查看 open jdk
$>rpm -e --nodeps 文件名 //强制卸载
2)解压Java包
$>tar -zvf jdk-7u67-linux-x64.tar.gz -C /soft
3)创建符号链接
$>ln -s java jdk1.7.0_67
4)配置Java环境变量(/etc/profile)
......
export JAVA_HOME=/soft/java
export PATH=$PATH:$JAVA_HOME/bin
5)使配置文件生效
$>source /etc/profile
6)验证Java环境是否配置成功
$>java -version
2.环境搭建
1)本地模式
1.解压Hadoop包
$>tar -zvf hadoop-2.5.0.tar.gz -C /soft
2)配置etc/hadoop/hadoop-env.sh(配置Java环境,已防万一)
$> export JAVA_HOME=/soft/java
3)测试运行
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar grep input output 'dfs[a-z.]+'
$ cat output/*
2)伪分布式
1.配置etc/hadoop/core-site.xml
<configuration>
#配置hdfs文件系统
<property>
<name>fs.defaultFS</name>
<value>hdfs://s201:8020</value>
</property>
#配置Hadoop的临时目录
<property>
<name>hadoop.tmp.dir</name>
<value>/soft/hadoop/tmp</value>
</property>
</configuration>
2.配置etc/hadoop/hdfs-site.xml
#配置保存文件副本数
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3.格式化文件系统
$ bin/hdfs namenode -format
4.启动NameNode和DataNode
$ sbin/hadoop-daemon.sh start namenode //单独启动namenode
$ sbin/hadoop-daemons.sh start datanode //单独启动datanode
$ sbin/start-dfs.sh //同时启动namenode和datanode
6.配置etc/hadoop/yarn-site.xml
<configuration>
#配置mapreduce程序
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
#配置resourcemanager所在节点
<property>
<name>yarn.resourcemanager.hostname</name>
<value>s201</value>
</property>
</configuration>
7.配置etc/hadoop/mapred-site.xml
#配置计算框架为yarn,默认是本地
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
注意:监控界面:HDFS端口是主机名+50070,resourcemanager的端口是主机名+8088
四.初识MapReduce应用
1.历史服务器
启动:
$>sbin/mr-jobhistory-daemon.sh start historyserver
停止:
$>sbin/mr-jobhistory-daemon.sh stop historyserver
2.日志聚集
应用运行完成以后,将日志信息上传到HDFS系统上
需要配置yarn-site.xml
<configuration>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>360</value>
</property>
</configuration>
3.垃圾回收间隔
配置core-site.xml
<configuration>
<property>
<name>fs.trash.interval</name>
<value>600</value>
</property>
</configuration>
4.启动方式
1)各个服务组件逐一启动
* hdfs
hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
* yarn
yarn-daemon.sh start|stop resourcemanager|nodemanager
* mapreduce
mr-historyserver-daemon.sh start|stop historyserver
2)各个模块分开启动
* hdfs
start-dfs.sh
stop-dfs.sh
* yarn
start-yarn.sh
stop-yarn.sh
3)全部启动(不推荐)
start-all.sh
stop-all.sh
5.ssh免密登录
1)生成密钥对
$>ssh-keygen -t rsa
2)拷贝文件到需要登录的机器上
$>ssh-copy-id s202
6.各个服务组件运行在那个配置中
NameNode
core-site.xml
fs.defaultFS
hdfs://s201:8020
DataNodes
slaves
s202
s203
s204
SecondaryNameNode
hdfs-site.xml
dfs.namenode.secondary.http-address
s204:50090
YARN
ResourceManager
yarn-site.xml
yarn.resourcemanager.hostname
s201
NodeManagers
slaves
s202
s203
s204MapReduce HistoryServer
mapred-site.xml
mapreduce.jobhistory.address
s201:10020
mapreduce.jobhistory.webapp.address
s201:19888