我爱编程

HDFS、YARN、Mapreduce概述

2018-02-02  本文已影响0人  Sx_Ren

当今时代,互联网世界中每天都有数以亿计的数据产出,比如某东某宝的商城订单,日志流量等数据,越来越多的小伙伴都投身大数据领域,基于海量数据进行数据处理,从数据中挖掘出各种有价值的信息,而Hadoop作为大数据的基石,核心组件包括HDFS、MapReduce、YARN,为海量数据的存储和计算提供了可行方案。大数据涉及到数据采集、数据处理/分析/挖掘、数据存储、数据可视化等,开源世界是伟大的,各种大数据框架应运而生,比如Pig、Hive、Hbase、Flume、Oozie、Mahout等等等等,这些框架大都基于Hadoop,为大数据的处理提供多种多样的技术选型,共同组成了一个大的技术栈也就Hadoop生态系统,本文对大数据核心组件HDFS、YARN和MapReduce做一个简单的概述。

背景

最初,大数据的存储和分析中有很多系统瓶颈,为了解决这些瓶颈,Google出了几篇论文,但并未做开源实现,这些论文包括MapReduce、GigTable、GFS,这就为Hadoop的产生提供了理论依据。

这里先引出一个问题,为什么很多公司选择Hadoop作为大数据平台的解决方案?原因有以下几点:

Hadoop常用发行版及选型包括原生版和商业公司发行版:
Hadoop三大核心组件包括:

分布式文件系统HDFS

分布式文件系统HDFS的设计目标:
HDFS架构

HDFS采用1个Master(即NameNode)带多个Slaves(DataNode)的架构,即NameNode + N个DataNode,建议NameNode和DataNode部署在不同节点上,类似这种架构的还有YARN/HBase等,这块官方是这样说的:

A typical deployment has a dedicated machine that runs only the NameNode software.
Each of the other machines in the cluster runs one instance of the DataNode software.
The architecture does not preclude running multiple DataNodes on the same machine
but in a real deployment that is rarely the case.

HDFS Architectrue
HDFS中块和副本因子的概念

NameNode和DataNode的职责:
NameNode:

DataNode:

HDFS环境搭建
  1. 下载Hadoop
    http://archive.cloudera.com/cdh5/cdh/5/2.6.0-cdh5.7.0
    wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz

  2. 安装jdk
    下载
    解压到app目录:tar -zxvf jdk-7u51-linux-x64.tar.gz -C ~/app/
    验证安装是否成功:~/app/jdk1.7.0_51/bin ./java -version
    建议把bin目录配置到系统环境变量(~/.bash_profile)中
    export JAVA_HOME=/home/hadoop/app/jdk1.7.0_51
    export PATH=$JAVA_HOME/bin:$PATH

  3. 机器参数设置
    hostname: hadoop001
    修改机器名: /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=hadoop001
    设置ip和hostname的映射关系: /etc/hosts
    192.168.199.200 hadoop001
    127.0.0.1 localhost
    ssh免密码登陆(本步骤可以省略,但是后面你重启hadoop进程时是需要手工输入密码才行)
    ssh-keygen -t rsa
    cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

  4. Hadoop配置文件修改: ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop

    • hadoop-env.sh
      export JAVA_HOME=/home/hadoop/app/jdk1.7.0_51

    • core-site.xml

        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop001:8020</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/hadoop/app/tmp</value>
         </property>  
      
    • hdfs-site.xml

        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
      
  5. 格式化HDFS
    注意:这一步操作,只是在第一次时执行,每次如果都格式化的话,那么HDFS上的数据就会被清空
    bin/hdfs namenode -format

  6. 启动HDFS
    sbin/start-dfs.sh
    验证是否启动成功:
    jps:
    DataNode
    SecondaryNameNode
    NameNode
    浏览器:
    http://hadoop001:50070/

  7. 停止HDFS
    sbin/stop-dfs.sh

资源管理和调度YARN

概述

使用yarn可以是XXX框架与其他计算框架共享集群资源,按资源需要分配,进而提高集群资源的利用率,不同计算框架可以共享同一个HDFS集群上的数据,享受整体的资源调度,XXX可以是Spark/MapReduce/Storm/Flink

YARN架构

YARN和HDFS一样,采用1个Master(即ResourceManager)带多个Slaves(NodeManager)的架构,即1 个ResourceManager + N个NodeManager

ResourceManager的职责: 一个集群active状态的RM只有一个,负责整个集群的资源管理和调度

NodeManager:整个集群中有N个,负责单个节点的资源管理和使用以及task的运行情况

ApplicationMaster:每个应用/作业对应一个,负责应用程序的管理

Container:

Client

YARN执行流程
YARN环境搭建

大数据计算框架MapReduce

MapReduce处理数据流程包括Input Spliting Mapping Shuffling Reducing Final result等,代码编写时需要实现Mapper和Reducer,比较繁琐,取而代之的是spark等易于编写代码、处理速度更快的框架。

MapReduce的局限性主要包括以下几点:
框架多样化

目前,各种大数据计算处理框架应运而生,主要包括:

上一篇下一篇

猜你喜欢

热点阅读