全国高校标准教材《云计算》姊妹篇,剖析大数据核心技术和实战应用
大数据
刘鹏 主编 张燕 张重生 张志立 副主编
B
IG
D
A
TA
刘 鹏
教授,清华大学博士。现任南京大数据研究院院长、中国信息协会大数据分会副会长、
中国大数据技术与应用联盟副理事长。
主持完成科研项目25项,发表论文80余篇,出版专业书籍15本。获部级科技进步二
等奖4项、三等奖4项。主编的《云计算》被全国高校普遍采用,被引用量排名中国计算机图
书第一名。创办了知名的中国云计算()和中国大数据()网站。
曾率队夺得2002 PennySort国际计算机排序比赛冠军,两次夺得全国高校科技比赛
最高奖,并三次夺得清华大学科技比赛最高奖。
荣获“全军十大学习成才标兵”(排名第一)、南京“十大杰出青年”、江苏省中青
年科学技术带头人、清华大学“学术新秀”等称号。
第二章 数据采集与预处理
数据预处理原理
数据仓库与ETL工具
习题
全国高校标准教材《云计算》姊妹篇,剖析大数据核心技术和实战应用
大数据采集架构
of 423
大数据采集架构 第二章 数据采集与预处理
如今,社会中各个机构、部门、公司、团体等正在实时不断地产生大量的信息,这些信息
需要以简单的方式进行处理,同时又要十分准确且能迅速满足各种类型的数据(信息)需
求者。这给我们带来了许多挑战,第一个挑战就是在大量的数据中收集需要的数据,下面
介绍常用的大数据采集工具。
of 424
概述
大数据采集架构 第二章 数据采集与预处理
Flume
Chukwa
Scrible
Kafka
大数据采集
工具
of 425
常用大数据采集工具
数据采集最传统的方式是企业自己的生产系统产生的数据,除上述生产系统中的数据外,
企业的信息系统还充斥着大量的用户行为数据、日志式的活动数据、事件信息等,越来越
多的企业通过架设日志采集系统来保存这些数据,希望通过这些数据获取其商业或社会价
值。
大数据采集架构 第二章 数据采集与预处理
of 426
在Flume中,外部输入称为Source(源
),系统输出称为Sink(接收端)。
Channel(通道)把Source和Sink链接
在一起。
Apache Chukwa项目与Flume有些相
类似,Chukwa继承了Hadoop的伸缩性
和鲁棒性。也内置一个功能强大的工具
箱,用于显示系统监控和分析结果。
互联网时代,网络爬虫也是许多企业获
取数据的一种方式。Nutch就是网络爬
虫中的娇娇者,Nutch是Apache旗下的
开源项目,存在已经超过10年,拥有大
量的忠实用户。
Flume体系架构
大数据采集架构 第二章 数据采集与预处理
of 427
Apache Kafka数据采集
Apache Kafka被设计成能够高效地处理大量实时数据,其特点是快速的、可扩展的、分布
式的,分区的和可复制的。Kafka是用Scala语言编写的,虽然置身于Java阵营,但其并不
遵循JMS规范。
Topics(话题):消息的分类名。
Producers(消息发布者):能够发布消息到
Topics的进程。
Consumers(消息接收者):可以从Topics接
收消息的进程。
Broker(代理):组成Kafka集群的单个节点。
基本Kafka集群的工作流程
大数据采集架构 第二章 数据采集与预处理
of 428
1、Topics
Topics是消息的分类名(或Feed的名称)。Kafka集群或Broker为每一个Topic都会维护一
个分区日志。每一个分区日志是有序的消息序列,消息是连续追加到分区日志上,并且这些
消息是不可更改的。
2、日志区分
一个Topic可以有多个分区,这些分区可以作为并行处理的单元,从而使Kafka有
能力高效地处理大量数据。
Topics与日志分析
大数据采集架构 第二章 数据采集与预处理
of 429
3、Producers
Producers是向它们选择的主题发布数据。生产者可以选择分配某个主题到哪个分区上。这
可以通过使用循环的方式或通过任何其他的语义分函数来实现。
4、Consumers
Kafka提供一种单独的消费者抽象,此抽象具有两种模式的特征消费组:Queuing 和
Publish-Subscribe。
5、Apache Kafka的安装及使用
因为Kafka是处理网络上请求,所以,应该为其创建一个专用的用户,这将便于对Kafka相
关服务的管理,减少对服务器上其他服务的影响。
大数据采集架构 第二章 数据采集与预处理
of 4210
使用useradd命令来创建一个Kafka用户:
$sudo useradd kafka –m
使用passwd 命令来设置其密码:
$sudo passwd kafaka
接下来把kafaka用户添加到sudo管理组,以便kafaka用户具有安装Apache Kafka依赖库的权限。这里使
用adduser命令来进行添加:
$sudo adduser kafka sudo
这时就可以使用kafka账户了。 切换用户可以使用su命令:
$su - kafka
在Apache Kafka安装所依赖的软件包前,最好更新一下apt管理程序的软件列表:
$sudo apt-get update
Apache Kafka需要Java运行环境,这里使用apt-get命令安装default-jre包,然后安装Java运行环境:
$sudo apt-get install default-jre
通过下面的命令测试一下Java运行环境是否安装成功,并查看Java的版本信息:
$java -version
大数据采集架构 第二章 数据采集与预处理
of 4211
机器有如下显示:
大数据采集架构 第二章 数据采集与预处理
of 4212
大数据采集架构 第二章 数据采集与预处理
of 4213
大数据采集架构 第二章 数据采集与预处理
of 4214
大数据采集架构 第二章 数据采集与预处理
of 4215
6、使用Java来编写Kafka的实例
首先,编写文件:
= localhost:2181
= localhost:9092
=
= 1
下面的代码是使用Java编写了一个Kafka消息发布者:
import ;
import ;
import ;
public class MyKafkaProducer {
private Producer<String, String> producer;
private final String topic;
public MyKafkaProducer(String topic) throws Exception {
InputStream in = .
getResourceAsStream("");
Properties props = new Properties();
(in);
ProducerConfig config = new ProducerConfig(props);
producer = new Producer<String, String>(config);
}
public void sendMessage(String msg){
KeyedMessage<String, String> data =
new KeyedMessage<String, String>( topic, msg);
(data);
();
}
public static void main(String[] args) throws Exception{
MyKafkaProducer producer = new MyKafkaProducer("HelloTopic");
String msg = "Hello Kafka!";
producer. sendMessage(msg);
}
}
大数据采集架构 第二章 数据采集与预处理
of 4216
下面创建Comsumer,首先编写KafkaProperties文件:
= localhost:2181
= testgroup
= 500
= 250
= 1000
上述参数配置,十分容易理解,具体的详细说明,可以参考Kafka的官方文档。下面
的代码是使用Java编写了一个Kafka的Comsumer。
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
public class MyKafkaConsumer {
private final ConsumerConnector consumer;
private final String topic;
public MyKafkaConsumer(String topic) throws Exception{
InputStream in = .
getResourceAsStream("");
Properties props = new Properties();
(in);
ConsumerConfig config = new ConsumerConfig(props);
consumer = (config);
= topic;
}
public void consumeMessage() {
Map<String, String> topicMap = new HashMap<String, String>();
(topic, new Integer(1));
Map<String, List<KafkaStream<byte[], byte[]>>> consumerStreamsMap =
(topicMap);
List<KafkaStream<byte[], byte[]>> streamList =
(topic);
for (final KafkaStream<byte[], byte[]> stream : streamList) {
ConsumerIterator<byte[], byte[]> consumerIte =
();
while (())
("message :: "
+ new String(().message()));
}
if (consumer != null)
();
}
public static void main(String[] args) throws Exception{
String groupId = "testgroup";
String topic = "HelloTopic";
MyKafkaConsumer consumer = new MyKafkaConsumer(topic);
();
}
}
第二章 数据采集与预处理
数据预处理原理
数据仓库与ETL工具
习题
全国高校标准教材《云计算》姊妹篇,剖析大数据核心技术和实战应用
大数据采集架构
of 4217
数据预处理原理 第二章 数据采集与预处理
通过数据预处理工
作,可以使残缺的
数据完整,并将错
误的数据纠正、多
余的数据去除,进
而将所需的数据挑
选出来,并且进行
数据集成。数据预
处理的常见方法有
数据清洗、数据集
成与数据变换。
of 4218
数据预处理原理 第二章 数据采集与预处理
填 充
缺 失
值
数据属性分为数值属性和非数值属性进行处理,
通过利用已存数据的多数信息来推测缺失值
数据属性分为数值属性和非数值属性进行处理,
通过利用已存数据的多数信息来推测缺失值
大量采用同一属性值,可能会误导挖掘程
序得出有偏差甚至错误的结论
数据偏离的问题小,但该方法十分
费时,不具备实际的可操作性
通常当在缺少类标号时,通过这样的方法
来填补缺失值
利用均值替换缺失值
忽略元组
人工填写缺失值
使用一个全局常量填充缺失值
用属性的均值填充缺失值
用同类样本的属性均值填充缺失值
使用最可能的值填充缺失值
of 4219
数据清洗
数据预处理原理 第二章 数据采集与预处理
of 4220
分箱方法通过考察某一数据周围数据的值,即“近邻”
来光滑有序数据的值。
分箱
01
回归
02
光滑数据可以通过一个函数拟合数据来实现。线性
回归的目标就是查找拟合两个属性的“最佳”线,使得
其中一个属性可以用于预测出另一个属性。
聚类
03 离群点可通过聚类进行检测,将类似的值组织成群或
簇,离群点即为落在簇集合之外的值。许多数据光滑
的方法也是涉及离散化的数据归约方法。
噪声是被测量的变量的随机误差或方差。给定一个数值属性,如何才能使数据“光滑”
,去掉噪声?下面给出数据光滑技术的具体内容。
数据预处理原理 第二章 数据采集与预处理
of 4221
数据清洗可以视为一个过程,包括检测偏差与纠正偏差两个步骤:
2 纠正偏差
1 检查偏差
可以使用已有的关于数据性质的知识发现噪声、离群点和需要考察的不寻常的
值。这种知识或“关于数据的数据”称为元数据。
即一旦发现偏差,通常需要定义并使用一系列的变换来纠正它们。但这些工具
只支持有限的变换,因此,常常可能需要为数据清洗过程的这一步编写定制的
程序。
数据预处理原理 第二章 数据采集与预处理
(1)模式集成和对象匹配问题
(2)冗余问题
(3)元组重复
(4)数据值冲突的检测与处理问题
数据挖掘经常
需要数据集成
合并来自多个
数据存储的数
据。数据还可
能需要变换成
适于挖掘的形
式。数据分析
任务多半涉及
数据集成。
问
题
of 4222
数据集成
数据预处理原理 第二章 数据采集与预处理
1、光滑。去除数据中的噪声
2、聚集。对数据进行汇总或聚集。
3、 数据泛化。使用概念分层,用高层概念替换低层
或“原始”数据
4、规范化。将属性数据按比例缩放,使之落入一个
小的特定区间
5、属性构造。可以构造新的属性并添加到属性集中,
以帮助挖掘过程
of 4223
数据变换
数据变换的目的是将数据变换或统一成适合挖掘的形式。数据变换主要涉及以下内容:
第二章 数据采集与预处理
数据预处理原理
数据仓库与ETL工具
习题
全国高校标准教材《云计算》姊妹篇,剖析大数据核心技术和实战应用
大数据采集架构
of 4224
数据仓库与ETL工具 第二章 数据采集与预处理
数据仓库中的数据来自于多种
业务数据源,这些数据源可能
处于不同硬件平台上,使用不
同的操作系统,数据模型也相
差很远。如何获取并向数据仓
库加载这些数据量大、种类多
的数据,已成为建立数据仓库
所面临的一个关键问题。
of 4225
数据仓库与ETL工具
数据仓库,是在企业管理和决策中面向主题的、集成的、随时间变化的、非易失性数据
的集合。
数据仓库与ETL工具 第二章 数据采集与预处理
如何获取并向数
据仓库加载数据
量大、种类多的
数据,一般要使
用专业的数据抽
取、转换和装载
工具,这些工具
合并起来被称为
ETL(Extract-
Transform-
Load)。
Informatica
PowerCenter
常用
ETL
工具
IBM
Datastage
Warehouse
Builder
(OWB) Oracle Data
Integrator
(ODI)
Microsoft SQL
Server Integration
Services
开源
Kettle
of 4226
常用ETL工具
数据仓库与ETL工具 第二章 数据采集与预处理
of 4227
PowerCenter IBM Datastage Kettle
Informatica的
PowerCenter是一个可扩
展、高性能企业数据集
成平台,应用于各种数
据集成流程,通过该平
台可实现自动化、重复
使用及灵活性
IBM InfoSphere
DataStage是一款功能强
大的ETL工具,是IBM数
据集成平台IBM
Information Server的一
部分,是专门的数据提
取、数据转换、数据发
布的工具。
Kettle是Pentaho中的ETL
工具,Pentaho是一套开源
BI解决方案。Kettle是一款
国外优秀的开源ETL工具,
由纯Java编写,可以在
Windows、Linux、UNIX上
运行,无须安装,数据抽
取高效稳定。
数据仓库与ETL工具 第二章 数据采集与预处理
of 4228
01
(1)Chef
可使用户创建任务(Job)。
它是提供图形用户界面的工作
设计工具。
02
(2)Kitchen
可使用户批量使用由Chef设计
的任务,一般在自动调度时借
助此命令调用调试成功的任务。
它是一个后台运行的程序,以
命令行方式,没有图形用户界
面。
03
(3)Spoon
可使用户通过图形界面来设计
ETL转换过程,一般在编写和
调试ETL时用到。
04
(4)Span
可使用户批量运行由Spoon设
计的ETL转换,Span是一个后
台执行的程序,以命令行方式,
没有图形界面,一般在自动调
度时借助此命令调用调试成功
的转换。
Kettle目前包括如下4个产品:
数据仓库与ETL工具 第二章 数据采集与预处理
案例:Kettle数据迁移 可以在Kettle的官网
进
入
主
界
面
在“输入”文件夹下选
择“表输入”,并把它
拖动到右侧编辑区
of 4229
案例:Kettle数据迁移
数据仓库与ETL工具 第二章 数据采集与预处理
案例:Kettle数据迁移
编辑数据来源 配置数
据库的参数 选择输入
表 设置“字段选择”
of 4230
数据仓库与ETL工具 第二章 数据采集与预处理
案例:Kettle数据迁移
将每一个输入字段改成和输出
字段相同的名字
自动列出之前表输入中的所有字段
of 4231
数据仓库与ETL工具 第二章 数据采集与预处理
案例:Kettle数据迁移
of 4232
在“输出”文件夹中拖出一个“表输出”到右侧编辑区,并画连接 配置数据库
将输出表对象设置为Oracle数据库 映射输入/输出关系 单击“确定”按钮关闭窗口
数据仓库与ETL工具 第二章 数据采集与预处理
案例:Kettle数据迁移
of 4233
执行转换 去本地Oracle数据库中查看
实时显示转换过程
1.采用哪些方式可以获取大数据?
2.常用大数据采集工具有哪些?
3.简述什么是Apache Kafka数据采集。
4.Topic可以有多个分区,这些分区有什么作用?
5.Kafka抽象具有哪种模式的特征消费组?
6.查阅相关资料,实例演示Apache Kafka的安装及使用。
7.使用Java来编写Kafka的实例。
8.简述数据预处理的原理。
9.数据清洗有哪些方法?
10.数据集成需要重点考虑的问题有哪些?
11.数据变换主要涉及哪些内容?
12.分别简述常用ETL工具。
习题:
百度排名首位的大数据资料和交流中心
百 度 排 名 首 位 的 云计算资料 和 交 流 中 心
BDRackBDRack大数据大数据实验实验一体机一体机
虚拟出百套集群,并行开展大数据实验
预装各种流行云计算和大数据平台
提供配套实验教程、课件、PPT和培训
学习大 数 据 必须 关注 的 公 众 号
知名微信公众号推荐
刘鹏看未来 云计算头条
云创大数据中国大数据
微信号: chinacloudnj
微信号: cstorbigdata
资源丰富、分析深入、
更新及时的云计算知
识共享平台。
微信号:lpoutlook
微信号: cStor_cn
国内大数据龙头企业。
提供领先的云存储、云
数据库、云视频、云传
输产品和解决方案。
眼光决定成败,与刘
鹏教授看未来。
刘鹏,清华博士,
《云计算》作者。
分享大数据技术,剖
析大数据案例,讨论
大数据话题。
运 用 大 数 据 , 精 彩 你 生 活
免费大数据App推荐
感谢聆听