Hadoop生态系统的特点:

源代码开源(免费) 
社区活跃、参与者众多 
涉及分布式存储和计算的方方面面 
已得到企业界验证

Hadoop1.0和2.0:

hadoop生态系统常用组件 hadoop2.0生态系统_Hadoop

Hadoop概述:

分布式存储系统HDFS(Hadoop Distributed File System) 
       分布式存储系统 
       提供了高可靠性、高扩展性和高吞吐率的数据存储服务 

资源管理系统YARN(Yet Another Resource Negotiator) 
      负责集群资源的统一管理和调度 

分布式计算框架MapReduce 
      分布式计算框架 
      具有易于编程、高容错性和高扩展性等优点 

Hadoop2.0层级关系:

hadoop生态系统常用组件 hadoop2.0生态系统_大数据_02

Hadoop构成 :HDFS 分布式文件存储

源自于Google的GFS论文 
    发表于2003年10月 
    HDFS是GFS克隆版 

HDFS特点 
    良好的扩展性 
    高容错性 
    适合PB级以上海量数据的存储 

基本原理 
    将文件切分成等大的数据块,存储到多台机器上 
    将数据切分、容错、负载均衡等功能透明化 
    可将HDFS看成一个容量巨大、具有高容错性的磁盘 

应用场景 
    海量数据的可靠性存储 
    数据归档 

hadoop生态系统常用组件 hadoop2.0生态系统_大数据_03

 

Hadoop构成 :YARN(资源管理系统)

YARN是什么 

    Hadoop 2.0新增系统 

    负责集群的资源管理和调度 

    使得多种计算框架可以运行在一个集群中 

YARN的特点 

    良好的扩展性、高可用性 

    对多种类型的应用程序进行统一管理和调度 

    自带了多种多用户调度器,适合共享集群环境

hadoop生态系统常用组件 hadoop2.0生态系统_hadoop生态系统常用组件_04

 

hadoop生态系统常用组件 hadoop2.0生态系统_hadoop生态系统常用组件_05

 

hadoop生态系统常用组件 hadoop2.0生态系统_hadoop生态系统常用组件_06

 

Hadoop构成 :MapReduce(分布式计算框架)

源自于Google的MapReduce论文 
    发表于2004年12月 
    Hadoop MapReduce是Google MapReduce克隆版
 MapReduce特点 
    良好的扩展性 
    高容错性 
    适合PB级以上海量数据的离线处理

hadoop生态系统常用组件 hadoop2.0生态系统_数据库_07

hadoop生态系统常用组件 hadoop2.0生态系统_大数据_08

hadoop生态系统常用组件 hadoop2.0生态系统_大数据_09

Hadoop生态系统介绍:1.0时代

hadoop生态系统常用组件 hadoop2.0生态系统_python_10

 

Hadoop生态系统介绍:2.0时代

hadoop生态系统常用组件 hadoop2.0生态系统_Hadoop_11

 

Hadoop生态系统:Hive(基于MR的数据仓库)

由facebook开源,最初用于解决海量结构化的日志数据统计问题; 
    ETL(Extraction-Transformation-Loading)工具 

构建在Hadoop之上的数据仓库; 
    数据计算使用MR,数据存储使用HDFS 

Hive 定义了一种类 SQL 查询语言——HQL; 
    类似SQL,但不完全相同 

通常用于进行离线数据处理(采用MapReduce); 
可认为是一个HQLMR的语言翻译器。

日志分析 
    统计网站一个时间段内的pv、uv 

多维度数据分析 
大部分互联网公司使用Hive进行日志分析,包括百度、淘宝等

其他场景 
    海量结构化数据离线分析 
低成本进行数据分析(不直接编写MR)

hadoop生态系统常用组件 hadoop2.0生态系统_数据库_12

Hadoop生态系统:Pig

由yahoo !开源,设计动机是提供一种基于MapReduce的数据分析工具 
构建在Hadoop之上的数据仓库 
定义了一种数据流语言——Pig Latin
通常用于进行离线分析

Hadoop生态系统:wordcount比较 mapreduce

hadoop生态系统常用组件 hadoop2.0生态系统_python_13

hadoop生态系统常用组件 hadoop2.0生态系统_python_14

 

Hadoop生态系统:wordcount比较 hive

hadoop生态系统常用组件 hadoop2.0生态系统_大数据_15

Hadoop生态系统:wordcount比较 pig

hadoop生态系统常用组件 hadoop2.0生态系统_Hadoop_16

 

Hadoop生态系统:Mahout(数据挖掘库)

基于Hadoop的机器学习和数据挖掘的分布式计算框架
实现了三大类算法 
    推荐(Recommendation) 
    聚类(Clustering) 
    分类(Classification) 

Hadoop生态系统:HBase(分布式数据库)

源自Google的Bigtable论文 
    发表于2006年11月 
    HBase是Google Bigtable克隆版 
HBase特点 
    高可靠性 
    高性能 
    面向列 
    良好的扩展性

Hadoop生态系统:HBase数据模型

Table:表 
    类似于传统传统数据库中的表 
Column Family:列簇 
    Table在水平方向有一个或者多个Column Family组成 
    一个Column Family中可以由任意多个Column组成 
Row Key: 行键 
    Table的主键 
    Table中的记录按照Row Key排序 
Timestamp: 时间戳 
    每行数据均对应一个时间戳 
    版本号

hadoop生态系统常用组件 hadoop2.0生态系统_数据库_17

 

Hadoop生态系统:HBase架构

hadoop生态系统常用组件 hadoop2.0生态系统_大数据_18

 

Hadoop生态系统:Zookeeper(分布式协作服务)

源自Google的Chubby论文 
    发表于2006年11月 
    Zookeeper是Chubby克隆版纳 

解决分布式环境下数据管理问题 
    统一命名 
    状态同步 
    集群管理 
    配置同步 

hadoop生态系统常用组件 hadoop2.0生态系统_python_19

 

Hadoop生态系统:Zookeeper 角色及应用

HDFS 
YARN 
Storm 
HBase 
Flume 
Dubbo(阿里巴巴) 
Metaq(阿里巴巴)

hadoop生态系统常用组件 hadoop2.0生态系统_大数据_20

 

Hadoop生态系统:Sqoop(数据同步工具)
连接Hadoop与传统数据库之间的桥梁 
    支持多种数据库,包括MySQL、DB2等 
    插拔式,用户可根据需要支持新的数据库
本质上是一个MapReduce程序 
    充分利用了MR分布式并行的特点 
    充分利用MR容错性

hadoop生态系统常用组件 hadoop2.0生态系统_大数据_21

Hadoop生态系统:Flume(日志收集工具)

Cloudera开源的日志收集系统
Flume特点 
    分布式 
    高可靠性 
    高容错性 
    易于定制与扩展

hadoop生态系统常用组件 hadoop2.0生态系统_hadoop生态系统常用组件_22

 

Hadoop生态系统:Oozie(作业流调度系统)

目前计算框架和作业类型繁多: 
    MapReduce Java、Streaming、HQL、Pig等 
如何对这些框架和作业进行统一管理和调度: 
    不同作业之间存在依赖关系(DAG); 
    周期性作业 
    定时执行的作业 
    作业执行状态监控与报警(发邮件、短信等) 
多种解决方案: 
    Linux Crontab 
    自己设计调度系统(淘宝等公司) 
    直接使用开源系统(Oozie)

Hadoop版本:发行版介绍

Apache Hadoop 
    推荐使用最新的2.x.x版本
    下载地址:http://hadoop.apache.org 
CDH(Cloudera Distributed Hadoop) 
    推荐使用最新的CDH5版本,比如CDH5.0.0 
    下载地址: http://archive.cloudera.com/cdh5/cdh/ 
HDP(Hortonworks Data Platform) 
    推荐使用最新的HDP 2.x版本,比如HDP 2.1版本 
    下载地址:http://zh.hortonworks.com/hdp/downloads/

Hadoop版本:HDP

hadoop生态系统常用组件 hadoop2.0生态系统_数据库_23

Hadoop版本:CDH  

hadoop生态系统常用组件 hadoop2.0生态系统_python_24

 

Hadoop版本:版本选择

不同发行版兼容性 
    架构、部署和使用方法一致,不同之处仅在若干内部实现
建议选择公司发行版,比如CDH或HDP 
    更易维护和升级 
    经过集成测试,不会面临版本兼容问题