62
Hadoop生态圈 汇报人:宋其新

Hadoop ecosystem

Embed Size (px)

Citation preview

Page 1: Hadoop ecosystem

Hadoop生态圈汇报人:宋其新

Page 2: Hadoop ecosystem

Directory

Brief Introduction

Hadoop Architecture

Hadoop Components

Summary

Q&A

Page 3: Hadoop ecosystem

IT 发展的三大趋势

•将移动通信和互联网二者结合起来,成为一体。

•指互联网的技术、平台、商业模式和应用与移动通信技术结合并实践的活动

的总称。移动互联网

•指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。云计算

•通常用来形容一个公司创造的大量非结构化和半结构化数据.

•是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海

量、高增长率和多样化的信息资产。大数据

大家还没搞清PC时代的时候,移动互联网来了,还没搞清移动互联网的时候,大数据时代来了 –-- 马云

Page 4: Hadoop ecosystem

举个例子——大数据如何应用在我们身边

• 背景1 几乎70%的澳洲人一到早起来的第一件事,除了冲杯咖啡外,就是在烤面包上抹上厚厚一层Vegemite,Vegemite是一种食品,膏状,咸味。

• 背景2 Vegemite在澳大利亚和新西兰很流行,其品牌的所有者正是世界第二大的食品和饮料制造公司—卡夫食品公司。

• 背景3 随着Web2.0的兴起,交互工具如博客、微博、社区、贴吧等火热,卡夫为了能更好地了解消费者的需求以进行潜在的产品升级,与IBM携手,旨在挖掘其全球的Vegemite品牌消费者的真实想法。

• 解决方案 IBM利用COBRA(Corporate Brand and Reputation Analysis),一种先进的基于文本分析的工具,在10.5亿条博客、论坛和讨论版的内容中抓取了47.9万条关于Vegemite新产品的讨论信息,并进行深层分析,最终高效地完成了产品升级

Page 5: Hadoop ecosystem

Directory

Brief Introduction

Hadoop Architecture

Hadoop Components

Summary

Q&A

Page 6: Hadoop ecosystem

组件简介

HDFS:分布式存储

YARN:分布式操作系统

MapReduc

ePig Hive Impala

Mahout

RHadoop

Giraph Hama

Flume Sqoop

Avro

Chukwa

Zookeeper

BigTop

Whirr

Search

Hcatalog

WebHdfs

HttpFs

HBase Cassandra Drill

Tez

Accumulo

Storm Spark Mesos

Phoenix

Shark

Hue

Ambari/Cloudera Manager

Page 7: Hadoop ecosystem

组件分类

Hue

Ambari/Cloudera Manager

MapReduce

HDFS

Yarn

HBase FlumeHive

ZooKeeper

Oozie

Ganglia Nagios

Mahout

Page 8: Hadoop ecosystem

Directory

Brief Introduction

Hadoop Architecture

Hadoop Components

Summary

Q&A

Page 9: Hadoop ecosystem

Why What How1. Hdfs

4. Hbase

7. Flume

3.MapReduce模板

2. Yarn/MapReduce

8. Mahout

9. Ganglia/Nagios

10. Ambari/Cloudera

3. Zookeeper

5. Hive

6. Oozie

为什么

是什么

从社会需求角度:为什么出现

技术角度:概念、架构

Page 10: Hadoop ecosystem

相关约定

cMaster cSlave0

cSlave1

cSlave2

cProxyiClient

Master:1台Slave: 3台cProxy: 1台

Page 11: Hadoop ecosystem

部署规划

cMaster cSlave0 cSlave1 cSlave2 cProxy iClient

Hadoop master slave slave slave proxy Hadoop client

HBase master slave slave slave Hbase client

Zookeeper zookeeper zookeeper zookeeper Zookeeper client

Ganglia/Nagios master slave slave slave web

Hive Hive

Flume Flume汇 Flume源

Oozie Oozie Server Oozie client

Mahout mahout

Ambari/CM master slave slave slave web

Page 12: Hadoop ecosystem

Hdfs实例

部署

cMaster

yum install hadoop-hdfs-namenode

cSlave0

cSlave1

cSlave2

yum install hadoop-hdfs-datanode

iClient

yum install hadoop-client

Page 13: Hadoop ecosystem

Hdfs实例

例题

①在hdfs集群里新建sqx用户并初始化hdfs里sqx用户家目录。

②使用sqx用户,在iClient上将/ect/hadoop/conf/下所有文件导入sqx用户家目录下input目录。

cMaster

cSlave0

cSlave1

cSlave2

cProxyiClient

Page 14: Hadoop ecosystem

Yarn实例

部署

cMaster

yum install hadoop-yarn-resourcemanager

cSlave0

cSlave1

cSlave2

hadoop-yarn-nodemanager

yum install hadoop-yarn-proxyserver

cProxy

Page 15: Hadoop ecosystem

MapReduce实例

部署

cSlave0cSlave1

cSlave2

yum install hadoop-mapreduce

cProxy

yum install hadoop-mapreduce-historyserver

①使用WordCount,统计input目录下文件里单词出现次数

②使用Grep程序,查询input下所有文件里,以dfs开头且中间字母a到z的单词

Page 16: Hadoop ecosystem

MapReduce实例

例题

①使用WordCount,统计input目录下文件里单词出现次数

②使用Grep程序,查询input下所有文件里,以dfs开头且中间字母a到z的单词

cMaster

cSlave0

cSlave1

cSlave2

cProxyiClient

Page 17: Hadoop ecosystem

Zookeeper为什么

现实

需求

部分失败

当一条消息在网络中的两个节点之间传送时,由于可能会出现各种问题,发送者无

法知道接收者是否已经接收到这条消息,比如在接收者还未接收到消息前,发生网

络中断,再比如接收者接收到消息后发生网络中断,甚至是接收进程死掉。发送者

能够获取真实情况的唯一途径是重新连接接收者,并向它发出询问。

即在分布式环境下甚至不知道一个操作是否已经失败。

分布式系统固有特征

iSend iReceive

网络中断

iReceive宕机

zookeeper

Page 18: Hadoop ecosystem

Zookeeper概念

概念

iSend iReceive

zookeeper

iSend iReceive

zookeeper1 zookeeper2 zookeeper3

Zookeeper(又称分布式锁)是由开源组织Apache开发的一个的高效、可靠的分布式协调服务。

Zookeeper典型应用-工作过程

Page 19: Hadoop ecosystem

Zookeeper架构

架构

iSend iReceive

工作原理:Paxos算法 一种基于消息传递模型的一致性算法

z1

z2

z3

Page 20: Hadoop ecosystem

Zookeeper实例

部署

yum install zookeeper-servercSlave0

cSlave1

cSlave2

例题

①分别使用命令行接口和API接口向zookeeper存储树中新建一节点并存入信息

②假设机器cSlave0上有进程Pa,机器cSlave2上有进程Pb,使用zookeeper实现进程Pa与Pb相互协作

Page 21: Hadoop ecosystem

HBase为什么

现实

需求

在线

访问

分布式数据库

在线实时服务

cMastercSlave0

cSlave1

cSlave2

cProxy

iClient

客户欲实时读HDFS里数据

太慢

缓存机制索引机制

2006年谷歌发表论文BigTable,

年末、微软旗下自然语言搜索公司Powerset出于处理大数据

的需求,按论文思想,开启了HBase项目

iClient

Hbase

Page 22: Hadoop ecosystem

HBase是什么

概念

是一个高可靠性、高性能、列存储、可伸缩、实时读写的分布式数据库系统

基于列的而不是基于行的模式适合于存储非结构化数据

HBase架构在hadoop之上 怎么架构在hadoop之上 HBase架构

Page 23: Hadoop ecosystem

HBase是什么

架构

DataNode DataNode DataNode DataNodeDataNode

Hadoop

DataNode

iClient

HRegionServer

HRegion

HLo

g

Store MemStore

StoreFile

Hfile

DFSClient

StoreFile

Hfile

MemStore

StoreFile

Hfile

HRegionServer

HRegion

HLo

g

Store MemStore

StoreFile

Hfile

StoreFile

Hfile

MemStore

StoreFile

Hfile

DFSClient

HMasterZookeeper

Page 24: Hadoop ecosystem

HBase数据模型

逻辑模型

行健 时间戳 列族contents 列族anchor 列族mime

"com.cnn.www"

t9 anchor:cnnsi.com= "CNN"

t8 anchor:my.look.ca= "CNN.com"

t6 contents:html="<html>…" mime:type="text/html"

t5 contents:html="<html>…"

t6 contents:html="<html>…"

行健 时间戳 列族contents

"com.cnn.www"t6 contents:html="<html>…"

t5 contents:html="<html>…"

t3 contents:html="<html>…"

行健 时间戳 列族anchor

"com.cnn.www" t9 anchor:cnnsi.com= "CNN"

t8 anchor:my.look.ca= "CNN.com"

行健 时间戳 列族mime

"com.cnn.www" t6 mime:type="text/html"

物理模型

Page 25: Hadoop ecosystem

HBase实例

部署

yum install hbase-regionservercSlave0

cSlave1

cSlave2

cMaster

yum install hbase-master

iClient

yum install hbase

Page 26: Hadoop ecosystem

①假定Mysql里有member表,要求使用HBase的shell接口,在HBase中新建并存储此表

HBase实例

例题

②简述HBase是否适合存储问题①中的结构化数据

身份id 姓名 性别 年龄 教育 职业 收入

201401 aa 0 21 e0 p3 m

201402 bb 1 22 e1 p2 l

201403 cc 1 23 e2 p1 m

Key行键

Value列键

列族personalAttr 列族socialAttr

身份ID 姓名 性别 年龄 教育 职业 收入

201401 aa 0 21 e0 p3 m

201402 bb 1 22 e1 p2 l

201403 cc 1 23 e2 P1 m

Page 27: Hadoop ecosystem

Pig为什么-是什么

现实

需求-

概念

程序员使用Pig脚本指挥HDFS、MapReduce

cMastercSlave0

cSlave1

cSlave2

cProxy

iClient

程序员使用MR

处理HDFS里数据

1.太慢2.要求高

Pig是用来

处理大规模数据集的脚本语言平台

1.编写MR程序2.组织处理流

1.编写MR程序2.组织处理流

提交任务

Page 28: Hadoop ecosystem

Pig是什么

工作过程

cMastercSlave0

cSlave1

cSlave2

cProxy

iClient

程序员或分析师根据业务逻辑写好数据流脚本

向Pig提交任务

Pig

Pig会将写好的数

据流处理脚本翻译成多个Hdfs,

Map和Reduce操作

Pig向hadoop提交任务

Page 29: Hadoop ecosystem

Pig是什么

架构

cMastercSlave0

cSlave1

cSlave2

cProxyPig

Pig Latin解释器

Pig Latin环境

Page 30: Hadoop ecosystem

数据类型

Pig是什么

语法

(1)基本数据类型:int、long、float、double、chararray和bytearray(2)复杂数据类型:字符串或基本类型与字符串的组合

运算符(1)算术运算符:+,-,*,/,%(2)三目运算符:?:(3)比较运算符:==,!=

函数

操作名称 功能

LOAD 载入待处理数据

FOREACH 逐行处理Tuple

FILTER 过滤不满足条件的Tuple

DUMP 将结果打印到屏幕

STORE 将结果保存到文件

Page 31: Hadoop ecosystem

Pig实例

部署

iClient

yum install pig

例题

①使用Pig Latin实现WordCount

Page 32: Hadoop ecosystem

Hive为什么

现实

需求

cMastercSlave0

cSlave1

cSlave2

cProxy

iClient

Hive的设计目的即是让Facebook内精通SQL的分析师能够以类SQL的方式查询存放在HDFS的大规模数据集

Hive起源于Facebook内部信息处理平台。由于需

要处理大量新兴社会网络数据,考虑到扩展性,Facebook最终选择hadoop作为存储和处理平台

1.编写MR程序2.组织处理流

提交任务

Page 33: Hadoop ecosystem

Hive是什么

概念-

工作过程

cMastercSlave0

cSlave1

cSlave2

cProxy

iClient

程序员或分析师根据业务逻辑写好数据流脚本

向Hive提交任务

Hive会将写好的数

据流处理脚本翻译成多个Hdfs,

Map和Reduce操作

Hive向hadoop提交任务

Hive是一个构建在hadoop上的数据仓库框架

Hive

Page 34: Hadoop ecosystem

Hive是什么

架构

cMastercSlave0

cSlave1

cSlave2

cProxyHive

Page 35: Hadoop ecosystem

Hive是什么-语法

语法

HiveQL:SQL类似

数据类型基本类型:数值型、布尔型、字符串复杂类型:ARRAY、MAP和STRUCT

关系操作:如x='a'算术操作:加法x+1逻辑操作:如逻辑或x or y

操作符

函数Hive内置了上百个函数基本同SQL一样

countlikeRank-------map子句reduce子句

Page 36: Hadoop ecosystem

Hive实例

部署方式

Page 37: Hadoop ecosystem

Hive实例

部署

iClient

yum install hive

例题

①在hive里新建member表,并将表6-6中的数据载入hive里的member表中

②查询member表中所有记录;查询member表中gender值为1的记录;查询member

表中gender值为1且age为22的记录;统计member中男性和女性出现次数

身份id 姓名 性别 年龄 教育 职业 收入

201401 aa 0 21 e0 p3 m

201402 bb 1 22 e1 p2 l

201403 cc 1 23 e2 p1 m

Page 38: Hadoop ecosystem

Hive实例

理解

功能好熟悉 Hive和Pig有和区别

(1)hive有metadata,pig无

(2)hive面向sql、Pig面向MapReduce

(1)pig是没有开发好的hive

(2)facebook误解hadoop用途

狭义的理解

Page 39: Hadoop ecosystem

Oozie为什么

现实需求

现实业务中处理数据时不可能只包含一个MR操作

“M1”→“R1”→“Java1”→“Pig1”→“Hive1”→“M2”→“R2”→“Java2”→“Mahout”

常见处理数据流程

现实业务中经常有:定时任务、定数任务、数据促发任务

每天夜里凌晨执行的任务、每周定时执行一次任务、文件夹下10个文件时执行任务

促发

前一个任务和后一个相关、前错、后不执行

错发生后、人不可能每时都监控、邮件、短信报错机制

错误机制

Page 40: Hadoop ecosystem

Oozie是什么

概念-

工作过程

cMastercSlave0

cSlave1

cSlave2

cProxy

iClient

向Oozie提交任务

Oozie托管这个计算流程

Oozie向hadoop提交任务

Oozie概念:组织各种工作流的引擎

“MR1”→“Java1”→“Pig1”→“Hive1”→“MR2”→“Java2”→“Mahout”

写入workflow.xml

Oozie

Page 41: Hadoop ecosystem

Oozie是什么

功能-

特性

(1)组织各种工作流

(2)托管工作流功能

界面

(3)通过workflow和job.properties来定义,最终生成DAG有向无环图

Page 42: Hadoop ecosystem

Oozie实例

部署

iClient

yum install oozie-client

例题

①运行Oozie MR示例程序

②运行Oozie Pig、Hive等示例

③编写workflow.xml,完成一次WordCount

cMaster

yum install oozie

④编写workflow.xml,完成两次WordCount,且第一个WC的输出为第二个WC输入

Page 43: Hadoop ecosystem

Flume为什么

现实需求

生产机器(线上机器)一般不作为数据处理机器

宕机了怎么办,误操作怎么办---故---线上机器都有严格负载监控、如CPU50%就报警

问:如何将线上机器产生的数据导入数据中心

Page 44: Hadoop ecosystem

Flume为什么

现实需求

WebServer

生产机A

WebServer

生产机B

WebServer

生产机C

WebServer

生产机D

cSlave0

cMaster

cSlave1

cSlave2

cSlave3

cSlave4

cProxy断 网

Page 45: Hadoop ecosystem

Flume是什么

概念-

典型应用

Flume是一个分布式高性能高可靠的数据传输工具

典型应用是将众多生产机器日志数据实时导入HDFS

它可以以简单的方式将不同数据源的数据导入到某个或多个数据中心

Page 46: Hadoop ecosystem

Flume是什么

组成

Source负责读取原始数据,目前Flume支持Avro Source,Thrift Source,Exec Source(即Shell),NetCat Source,Syslog Sources,HTTP Source等大量类型,甚至用户可以自定义Source,使用时仅需在配置文件里声明即可

Channel负责将从Source端传来的数据存入到Channel,类型的:即Memory,JDBC和FileFlume的分用复用和过滤功能:定义并控制多个相互无关的Channel,实现数据发往不同地点而并不干涉

Sink负责从Channel中取出并发送数据,Flume当前支持HDFS、Logger、Avro、Thrift,IRC,File,HBase等大量类型Sink,其实这些Sink内部都是使用netty来发送数据的,只是发送的协议不同而已

Page 47: Hadoop ecosystem

Flume实例

部署

iClient

yum install flume-ng-agent

cMaster

yum install flume-ng-agent

cMastercSlave0

cSlave1

cSlave2

cProxy

iClient

Page 48: Hadoop ecosystem

Flume实例

例题

①要求发送端iClient使用telnet向cMaster发送数据,而接收端cMaster开启44444端口接收数据,并将收到的数据显示于命令行

②要求发送端iClient将本地文件“/home/joe/source.txt”发往接收端cMaster,而接收端cMaster需将这些数据存入HDFS

Page 49: Hadoop ecosystem

Mahout为什么

现实需求

目的:机器学习算法、数据挖掘算法并行化

大数据为数据挖掘带来的困难

Page 50: Hadoop ecosystem

Mahout是什么

概念-

工作过程

cMastercSlave0

cSlave1

cSlave2

cProxy

iClient

向Mahout提交任务

Mahout提供Jar(算法支持)

Mahout向hadoop提交任务

机器学习数据挖掘并行化算法库包括聚类,分类,推荐过滤,频繁子项挖掘等

写好处理流:“准备数据”→“训练模型”→“测试模型性能”

Mahout

Page 51: Hadoop ecosystem

Mahout是什么

组成

聚类分类协同推荐

算法

工具类 完成数据欲处理:转成二进制与矩阵

Page 52: Hadoop ecosystem

Mahout实例

部署

iClient

yum install mahout

例题

①要求以sqx用户运行mahout示例程序naivebayes,实现下载数据,建立学习器,训练学习器,最后使用测试数据针对此学习器进行性能测试

Page 53: Hadoop ecosystem

Ganglia/Nagios为什么

现实需求

Ganglia/Nagios分布式可视化集群监控工具

大数据处理过程中集群各项参数是否正常,内存是否过载,是否有机器宕机

Page 54: Hadoop ecosystem

Ganglia/Nagios是什么

组成

Master: gmetad进程统计metricsSlave: gmond分布式收集参数metricsrrdTool:绘图工具,将metrics转化为图标

Ganglia

NagiosMaster:维持一个队列,check_nrpe向队列中写入服务器状态数据Slave: check_nrpe调用本地NRPE daremon进程,执行check_disk等py插件Master:web端显示图标以及提供报警功能

Page 55: Hadoop ecosystem

Ambari/Cloudera Manager为什么

现实需求

可视化集群部署管理工具

集群机器上千台的时候,无法手动安装集群环境,或者弹性增加机器节点

Page 56: Hadoop ecosystem

Ambari/Cloudera Manager 是什么

组成

Apache开源项目,集成Ganglia和Nagios组件,提供集群节点增加等其他功能

Ambari

ClouderaManger

Cloudera开源项目,支持弹性增加节点,增加功能模块,检测模块状态,开启关闭集群等功能

Page 57: Hadoop ecosystem

Directory

Brief Introduction

Hadoop Architecture

Hadoop Components

Summary

Q&A

Page 58: Hadoop ecosystem

Summary1. Hdfs

4. Hbase

7. Flume

3.MapReduce模板

2. Yarn/MapReduce

8. Mahout

9. Ganglia/Nagios

10. Ambari/Cloudera

3. Zookeeper

5. Hive

6. Oozie

底层结构

数据收集处理转换

数据挖掘

监控和运维

Hue

Ambari/Cloudera Manager

MapReduce

HDFS

Yarn

HBase FlumeHive

ZooKeeper

Oozie

Ganglia Nagios

Mahout

未涉及组件 简要介绍

Storm Twitter开源项目,分布式的、容错的实时计算系统

Kafka linkedin用于日志处理的分布式消息队列

Spark/Shark UC Berkeley AMP lab所开源的基于内存的并行计算框架

Page 59: Hadoop ecosystem

我们再来看一个简单的问题

Page 60: Hadoop ecosystem

[1] http://hadoop.apache.org/[2] http://zookeeper.apache.org/[3] https://hbase.apache.org/[4] https://pig.apache.org/[5] http://hive.apache.org/[6] https://oozie.apache.org/[7] http://flume.apache.org/[8] https://mahout.apache.org/[9] http://sqoop.apache.org/[10] http://cassandra.apache.org/[11] http://avro.apache.org/[12] http://ambari.apache.org/[13] https://chukwa.apache.org/[14] https://hama.apache.org/[15] https://giraph.apache.org/[16] http://crunch.apache.org/[17] https://whirr.apache.org/[18] http://bigtop.apache.org/[19] http://hortonworks.com/hadoop/hcatalog/[20] http://gethue.com/[21] http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH5/latest/CDH5-Installation-Guide/CDH5-Installation-Guide.html

参考文献

Page 61: Hadoop ecosystem

Thanks~!

Page 62: Hadoop ecosystem

Directory

Brief Introduction

Hadoop Architecture

Hadoop Components

Summary

Q&A