天天看点

大数据企业学习篇02_1------hadoop初识

一.Hadoop 2.x概述

1.hadoop的来源

Hadoop的产生主要来源于Google的三篇论文,如下:

GFS ——-> HDFS

MapReduce ————>MapReduce

BigTable ———–>Hbase

2.hadoop是什么

简言之,Hadoop是大规模数据处理,主要是存储、计算、资源调度等功能。http://hadoop.apache.org

3.Hadoop的组成

Common:为其他Hadoop模块提供服务

HDFS:分布式文件系统,用于存储海量数据,主要特点是分布式(多主机存储)、安全性(副本数据,一般是3个副本),数据以block形式存储,数据块大小默认是128M

MapReduce:一个分布式的离线计算框架,对海量数据进行处理,主要思想是分而治之,将大数据集拆分成小的数据集,然后对每个数据集进行逻辑业务处理(map),合并统计数据结果(reduce)

Yarn:一个分布式资源管理和任务调度框架,例如管理整个集群资源(cpu数,内存)、分配调度集群的资源

4.HDFS系统架构图

大数据企业学习篇02_1------hadoop初识

hdfs是以主-从节点运行。

namenode:主节点,存放元数据信息,比如文件名、文件的目录结构、文件属性、每个文件块列表以及块所在的datanode等。**注意:**namenode的元数据一部分存放在内存中,一部分在磁盘上(例如:fsimage(镜像文件)和edits(编辑日志))

datanode:从节点,存放的是数据块以及数据块的校验和

Secondary NameNode: 用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照

5.Yarn架构图

大数据企业学习篇02_1------hadoop初识

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

大数据企业学习篇02_1------hadoop初识

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生态系统

大数据企业学习篇02_1------hadoop初识

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-u67-linux-x64.tar.gz -C /soft
           

3)创建符号链接

$>ln -s java jdk1._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-.tar.gz -C /soft
           

2)配置etc/hadoop/hadoop-env.sh(配置Java环境,已防万一)

3)测试运行

$ mkdir input
  $ cp etc/hadoop/*.xml input
  $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-..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  
           

5.以下可参考官方文档了

http://hadoop.apache.org/docs/r2.7.4/hadoop-project-dist/hadoop-common/SingleCluster.html#Installing_Software

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

s204

MapReduce HistoryServer

mapred-site.xml

mapreduce.jobhistory.address

s201:10020

mapreduce.jobhistory.webapp.address

s201:19888

继续阅读