Download - Hadoop ecosystem
Hadoop生态圈汇报人:宋其新
Directory
Brief Introduction
Hadoop Architecture
Hadoop Components
Summary
Q&A
IT 发展的三大趋势
•将移动通信和互联网二者结合起来,成为一体。
•指互联网的技术、平台、商业模式和应用与移动通信技术结合并实践的活动
的总称。移动互联网
•指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。云计算
•通常用来形容一个公司创造的大量非结构化和半结构化数据.
•是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海
量、高增长率和多样化的信息资产。大数据
大家还没搞清PC时代的时候,移动互联网来了,还没搞清移动互联网的时候,大数据时代来了 –-- 马云
举个例子——大数据如何应用在我们身边
• 背景1 几乎70%的澳洲人一到早起来的第一件事,除了冲杯咖啡外,就是在烤面包上抹上厚厚一层Vegemite,Vegemite是一种食品,膏状,咸味。
• 背景2 Vegemite在澳大利亚和新西兰很流行,其品牌的所有者正是世界第二大的食品和饮料制造公司—卡夫食品公司。
• 背景3 随着Web2.0的兴起,交互工具如博客、微博、社区、贴吧等火热,卡夫为了能更好地了解消费者的需求以进行潜在的产品升级,与IBM携手,旨在挖掘其全球的Vegemite品牌消费者的真实想法。
• 解决方案 IBM利用COBRA(Corporate Brand and Reputation Analysis),一种先进的基于文本分析的工具,在10.5亿条博客、论坛和讨论版的内容中抓取了47.9万条关于Vegemite新产品的讨论信息,并进行深层分析,最终高效地完成了产品升级
Directory
Brief Introduction
Hadoop Architecture
Hadoop Components
Summary
Q&A
组件简介
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
组件分类
Hue
Ambari/Cloudera Manager
MapReduce
HDFS
Yarn
HBase FlumeHive
ZooKeeper
Oozie
Ganglia Nagios
Mahout
Directory
Brief Introduction
Hadoop Architecture
Hadoop Components
Summary
Q&A
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
为什么
是什么
从社会需求角度:为什么出现
技术角度:概念、架构
相关约定
cMaster cSlave0
cSlave1
cSlave2
cProxyiClient
Master:1台Slave: 3台cProxy: 1台
部署规划
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
Hdfs实例
部署
cMaster
yum install hadoop-hdfs-namenode
cSlave0
cSlave1
cSlave2
yum install hadoop-hdfs-datanode
iClient
yum install hadoop-client
Hdfs实例
例题
①在hdfs集群里新建sqx用户并初始化hdfs里sqx用户家目录。
②使用sqx用户,在iClient上将/ect/hadoop/conf/下所有文件导入sqx用户家目录下input目录。
cMaster
cSlave0
cSlave1
cSlave2
cProxyiClient
Yarn实例
部署
cMaster
yum install hadoop-yarn-resourcemanager
cSlave0
cSlave1
cSlave2
hadoop-yarn-nodemanager
yum install hadoop-yarn-proxyserver
cProxy
MapReduce实例
部署
cSlave0cSlave1
cSlave2
yum install hadoop-mapreduce
cProxy
yum install hadoop-mapreduce-historyserver
①使用WordCount,统计input目录下文件里单词出现次数
②使用Grep程序,查询input下所有文件里,以dfs开头且中间字母a到z的单词
MapReduce实例
例题
①使用WordCount,统计input目录下文件里单词出现次数
②使用Grep程序,查询input下所有文件里,以dfs开头且中间字母a到z的单词
cMaster
cSlave0
cSlave1
cSlave2
cProxyiClient
Zookeeper为什么
现实
需求
部分失败
当一条消息在网络中的两个节点之间传送时,由于可能会出现各种问题,发送者无
法知道接收者是否已经接收到这条消息,比如在接收者还未接收到消息前,发生网
络中断,再比如接收者接收到消息后发生网络中断,甚至是接收进程死掉。发送者
能够获取真实情况的唯一途径是重新连接接收者,并向它发出询问。
即在分布式环境下甚至不知道一个操作是否已经失败。
分布式系统固有特征
iSend iReceive
网络中断
iReceive宕机
zookeeper
Zookeeper概念
概念
iSend iReceive
zookeeper
iSend iReceive
zookeeper1 zookeeper2 zookeeper3
Zookeeper(又称分布式锁)是由开源组织Apache开发的一个的高效、可靠的分布式协调服务。
Zookeeper典型应用-工作过程
Zookeeper架构
架构
iSend iReceive
工作原理:Paxos算法 一种基于消息传递模型的一致性算法
z1
z2
z3
Zookeeper实例
部署
yum install zookeeper-servercSlave0
cSlave1
cSlave2
例题
①分别使用命令行接口和API接口向zookeeper存储树中新建一节点并存入信息
②假设机器cSlave0上有进程Pa,机器cSlave2上有进程Pb,使用zookeeper实现进程Pa与Pb相互协作
HBase为什么
现实
需求
在线
访问
分布式数据库
在线实时服务
cMastercSlave0
cSlave1
cSlave2
cProxy
iClient
客户欲实时读HDFS里数据
太慢
缓存机制索引机制
2006年谷歌发表论文BigTable,
年末、微软旗下自然语言搜索公司Powerset出于处理大数据
的需求,按论文思想,开启了HBase项目
iClient
Hbase
HBase是什么
概念
是一个高可靠性、高性能、列存储、可伸缩、实时读写的分布式数据库系统
基于列的而不是基于行的模式适合于存储非结构化数据
HBase架构在hadoop之上 怎么架构在hadoop之上 HBase架构
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
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"
物理模型
HBase实例
部署
yum install hbase-regionservercSlave0
cSlave1
cSlave2
cMaster
yum install hbase-master
iClient
yum install hbase
①假定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
Pig为什么-是什么
现实
需求-
概念
程序员使用Pig脚本指挥HDFS、MapReduce
cMastercSlave0
cSlave1
cSlave2
cProxy
iClient
程序员使用MR
处理HDFS里数据
1.太慢2.要求高
Pig是用来
处理大规模数据集的脚本语言平台
1.编写MR程序2.组织处理流
1.编写MR程序2.组织处理流
提交任务
Pig是什么
工作过程
cMastercSlave0
cSlave1
cSlave2
cProxy
iClient
程序员或分析师根据业务逻辑写好数据流脚本
向Pig提交任务
Pig
Pig会将写好的数
据流处理脚本翻译成多个Hdfs,
Map和Reduce操作
Pig向hadoop提交任务
Pig是什么
架构
cMastercSlave0
cSlave1
cSlave2
cProxyPig
Pig Latin解释器
Pig Latin环境
数据类型
Pig是什么
语法
(1)基本数据类型:int、long、float、double、chararray和bytearray(2)复杂数据类型:字符串或基本类型与字符串的组合
运算符(1)算术运算符:+,-,*,/,%(2)三目运算符:?:(3)比较运算符:==,!=
函数
操作名称 功能
LOAD 载入待处理数据
FOREACH 逐行处理Tuple
FILTER 过滤不满足条件的Tuple
DUMP 将结果打印到屏幕
STORE 将结果保存到文件
Pig实例
部署
iClient
yum install pig
例题
①使用Pig Latin实现WordCount
Hive为什么
现实
需求
cMastercSlave0
cSlave1
cSlave2
cProxy
iClient
Hive的设计目的即是让Facebook内精通SQL的分析师能够以类SQL的方式查询存放在HDFS的大规模数据集
Hive起源于Facebook内部信息处理平台。由于需
要处理大量新兴社会网络数据,考虑到扩展性,Facebook最终选择hadoop作为存储和处理平台
1.编写MR程序2.组织处理流
提交任务
Hive是什么
概念-
工作过程
cMastercSlave0
cSlave1
cSlave2
cProxy
iClient
程序员或分析师根据业务逻辑写好数据流脚本
向Hive提交任务
Hive会将写好的数
据流处理脚本翻译成多个Hdfs,
Map和Reduce操作
Hive向hadoop提交任务
Hive是一个构建在hadoop上的数据仓库框架
Hive
Hive是什么
架构
cMastercSlave0
cSlave1
cSlave2
cProxyHive
Hive是什么-语法
语法
HiveQL:SQL类似
数据类型基本类型:数值型、布尔型、字符串复杂类型:ARRAY、MAP和STRUCT
关系操作:如x='a'算术操作:加法x+1逻辑操作:如逻辑或x or y
操作符
函数Hive内置了上百个函数基本同SQL一样
countlikeRank-------map子句reduce子句
Hive实例
部署方式
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
Hive实例
理解
功能好熟悉 Hive和Pig有和区别
(1)hive有metadata,pig无
(2)hive面向sql、Pig面向MapReduce
(1)pig是没有开发好的hive
(2)facebook误解hadoop用途
狭义的理解
Oozie为什么
现实需求
现实业务中处理数据时不可能只包含一个MR操作
“M1”→“R1”→“Java1”→“Pig1”→“Hive1”→“M2”→“R2”→“Java2”→“Mahout”
常见处理数据流程
现实业务中经常有:定时任务、定数任务、数据促发任务
流
每天夜里凌晨执行的任务、每周定时执行一次任务、文件夹下10个文件时执行任务
促发
前一个任务和后一个相关、前错、后不执行
错发生后、人不可能每时都监控、邮件、短信报错机制
错误机制
Oozie是什么
概念-
工作过程
cMastercSlave0
cSlave1
cSlave2
cProxy
iClient
向Oozie提交任务
Oozie托管这个计算流程
Oozie向hadoop提交任务
Oozie概念:组织各种工作流的引擎
“MR1”→“Java1”→“Pig1”→“Hive1”→“MR2”→“Java2”→“Mahout”
写入workflow.xml
Oozie
Oozie是什么
功能-
特性
(1)组织各种工作流
(2)托管工作流功能
界面
(3)通过workflow和job.properties来定义,最终生成DAG有向无环图
Oozie实例
部署
iClient
yum install oozie-client
例题
①运行Oozie MR示例程序
②运行Oozie Pig、Hive等示例
③编写workflow.xml,完成一次WordCount
cMaster
yum install oozie
④编写workflow.xml,完成两次WordCount,且第一个WC的输出为第二个WC输入
Flume为什么
现实需求
生产机器(线上机器)一般不作为数据处理机器
宕机了怎么办,误操作怎么办---故---线上机器都有严格负载监控、如CPU50%就报警
问:如何将线上机器产生的数据导入数据中心
Flume为什么
现实需求
WebServer
生产机A
WebServer
生产机B
WebServer
生产机C
WebServer
生产机D
cSlave0
cMaster
cSlave1
cSlave2
cSlave3
cSlave4
cProxy断 网
Flume是什么
概念-
典型应用
Flume是一个分布式高性能高可靠的数据传输工具
典型应用是将众多生产机器日志数据实时导入HDFS
它可以以简单的方式将不同数据源的数据导入到某个或多个数据中心
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来发送数据的,只是发送的协议不同而已
Flume实例
部署
iClient
yum install flume-ng-agent
cMaster
yum install flume-ng-agent
cMastercSlave0
cSlave1
cSlave2
cProxy
iClient
Flume实例
例题
①要求发送端iClient使用telnet向cMaster发送数据,而接收端cMaster开启44444端口接收数据,并将收到的数据显示于命令行
②要求发送端iClient将本地文件“/home/joe/source.txt”发往接收端cMaster,而接收端cMaster需将这些数据存入HDFS
Mahout为什么
现实需求
目的:机器学习算法、数据挖掘算法并行化
大数据为数据挖掘带来的困难
Mahout是什么
概念-
工作过程
cMastercSlave0
cSlave1
cSlave2
cProxy
iClient
向Mahout提交任务
Mahout提供Jar(算法支持)
Mahout向hadoop提交任务
机器学习数据挖掘并行化算法库包括聚类,分类,推荐过滤,频繁子项挖掘等
写好处理流:“准备数据”→“训练模型”→“测试模型性能”
Mahout
Mahout是什么
组成
聚类分类协同推荐
算法
工具类 完成数据欲处理:转成二进制与矩阵
Mahout实例
部署
iClient
yum install mahout
例题
①要求以sqx用户运行mahout示例程序naivebayes,实现下载数据,建立学习器,训练学习器,最后使用测试数据针对此学习器进行性能测试
Ganglia/Nagios为什么
现实需求
Ganglia/Nagios分布式可视化集群监控工具
大数据处理过程中集群各项参数是否正常,内存是否过载,是否有机器宕机
Ganglia/Nagios是什么
组成
Master: gmetad进程统计metricsSlave: gmond分布式收集参数metricsrrdTool:绘图工具,将metrics转化为图标
Ganglia
NagiosMaster:维持一个队列,check_nrpe向队列中写入服务器状态数据Slave: check_nrpe调用本地NRPE daremon进程,执行check_disk等py插件Master:web端显示图标以及提供报警功能
Ambari/Cloudera Manager为什么
现实需求
可视化集群部署管理工具
集群机器上千台的时候,无法手动安装集群环境,或者弹性增加机器节点
Ambari/Cloudera Manager 是什么
组成
Apache开源项目,集成Ganglia和Nagios组件,提供集群节点增加等其他功能
Ambari
ClouderaManger
Cloudera开源项目,支持弹性增加节点,增加功能模块,检测模块状态,开启关闭集群等功能
Directory
Brief Introduction
Hadoop Architecture
Hadoop Components
Summary
Q&A
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所开源的基于内存的并行计算框架
我们再来看一个简单的问题
[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
参考文献
Thanks~!
Directory
Brief Introduction
Hadoop Architecture
Hadoop Components
Summary
Q&A