?
?
???????? 离线计算:批量获取数据、批量传输数据、周期性批量计算数据、数据展示
???????? 代表技术:Sqoop批量导入数据、HDFS批量存储数据、MapReduce批量计算数据、Hive批量计算数据、***任务调度
1,hivesql
2、调度平台
3、Hadoop集群运维
4、数据清洗(脚本语言)
5、元数据管理
6、数据稽查
7、数据仓库模型架构
?
???????? 流式计算:数据实时产生、数据实时传输、数据实时计算、实时展示
???????? 代表技术:Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、持久化存储(mysql)。
???????? 一句话总结:将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果
?
???????? 最大的区别:实时收集、实时计算、实时展示
?
???????? Flume实时采集,低延迟
???????? Kafka消息队列,低延迟
???????? Storm实时计算,低延迟
???????? Redis实时存储,低延迟
?
???????? Storm用来实时处理数据,特点:低延迟、高可用、分布式、可扩展、数据不丢失。提供简单容易理解的接口,便于开发。
?
????????
???????? 海量数据?数据类型很多,产生数据的终端很多,处理数据能力增强
????????
????????
?
Job:任务名称
JobTracker:项目经理
TaskTracker:开发组长、产品经理
Child:负责开发的人员
Mapper/Reduce:开发人员中的两种角色,一种是服务器开发、一种是客户端开发
?
Topology:任务名称
Nimbus:项目经理
Supervisor:开组长、产品经理
Worker:开人员
Spout/Bolt:开人员中的两种角色,一种是服务器开发、一种是客户端开发
?
???????? ???????? Storm用来实时计算源源不断产生的数据,如同流水线生产。
从海量日志中分析出特定的数据,并将分析的结果存入外部存储器用来辅佐决策。
将一个数据从一个系统传输到另外一个系统,比如将数据库同步到Hadoop
将接受到的消息按照某种格式进行转化,存储到另外一个系统如消息中间件
最初,用户属性分析是通过每天在云梯上定时运行的MR job来完成的。为了满足实时性的要求,希望能够实时分析用户的行为日志,将最新的用户属性反馈给搜索引擎,能够为用户展现最贴近其当前需求的结果。
利用HTML5提供的performance标准获得可用的指标,并记录日志。Storm集群实时分析日志和入库。使用DRPC聚合成报表,通过历史数据对比等判断规则,触发预警事件。
为了更加精准投放广告,阿里妈妈后台计算引擎需要维护每个用户的兴趣点(理想状态是,你对什么感兴趣,就向你投放哪类广告)。用户兴趣主要基于用户的历史行为、用户的实时查询、用户的实时点击、用户的地理信息而得,其中实时查询、实时点击等用户行为都是实时数据。考虑到系统的实时性,阿里妈妈使用Storm维护用户兴趣数据,并在此基础上进行受众定向的广告投放。
????????
?
?
?
?
通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源数据。
?
集群部署的流程:下载安装包、解压安装包、修改配置文件、分发安装包、启动集群
注意:
? ? 所有的集群上都需要配置hosts
? ??vi ?/etc/hosts
?????? 192.168.239.128?storm01?zk01?hadoop01
? ? ? 192.168.239.129?storm02?zk02?hadoop02
?????? 192.168.239.130?storm03?zk03?hadoop03
?
安装前的准备工作(zk集群已经部署完毕)
chkconfig iptables off? && setenforce 0
groupadd realtime && useradd realtime && usermod -a -G realtime realtime
mkdir /export
mkdir /export/servers
chmod 755 -R /export
su realtime
???????? wget ? ?http://124.202.164.6/files/1139000006794ECA/apache.fayea.com/storm/apache-storm-0.9.5/apache-storm-0.9.5.tar.gz
?
tar -zxvf apache-storm-0.9.5.tar.gz -C /export/servers/
cd /export/servers/
ln -s apache-storm-0.9.5 storm
???????? mv /export/servers/storm/conf/storm.yaml /export/servers/storm/conf/storm.yaml.bak
vi /export/servers/storm/conf/storm.yaml
输入以下内容:
?
scp -r /export/servers/apache-storm-0.9.5 storm02:/export/servers
然后分别在各机器上创建软连接
cd /export/servers/
ln -s apache-storm-0.9.5 storm
cd /export/servers/storm/bin/
nohup ./storm nimbus &
cd /export/servers/storm/bin/
nohup ./storm ui &
cd /export/servers/storm/bin/
nohup ./storm supervisor &
访问nimbus.host:/8080,即可看到storm的ui界面。
?
?
有许多简单且有用的命令可以用来管理拓扑,它们可以提交、杀死、禁用、再平衡拓扑。
bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.6.jar storm.starter.WordCountTopology wordcount
storm kill topology-name -w 10
storm deactivte topology-name
我们能够挂起或停用运行中的拓扑。当停用拓扑时,所有已分发的元组都会得到处理,但是spouts的nextTuple方法不会被调用。销毁一个拓扑,可以使用kill命令。它会以一种安全的方式销毁一个拓扑,首先停用拓扑,在等待拓扑消息的时间段内允许拓扑完成当前的数据流。
??????? storm activate topology-name
??????? storm rebalance topology-name
??????? 再平衡使你重分配集群任务。这是个很强大的命令。比如,你向一个运行中的集群增加了节点。再平衡命令将会停用拓扑,然后在相应超时时间之后重分配工人,并重启拓扑。
???????? 依次启动集群的各种角色
在nimbus的服务器上
cd /export/servers/storm/logs
tail -100f /export/servers/storm/logs/nimbus.log
在ui的服务器上,一般和nimbus一个服务器
cd /export/servers/storm/logs
tail -100f /export/servers/storm/logs/ui.log
在supervisor服务上
cd /export/servers/storm/logs
tail -100f /export/servers/storm/logs/supervisor.log
在supervisor服务上
cd /export/servers/storm/logs
tail -100f /export/servers/storm/logs/worker-6702.log
?
(该worker正在运行wordcount程序)
?
?
点击Apache/storm文字标签,进入github
? ????? ??GitHub - apache/storm: Mirror of Apache Storm
在网页右侧,拷贝storm源码地址
? ??
?
?
https://github.com/apache/storm/tags/v0.9.5
?
扩展包中的三个项目,使storm能与hbase、hdfs、kafka交互
?
?
设计一个topology,来实现对文档里面的单词出现的频率进行统计。
整个topology分为三个部分:
?
?
?
?
Storm里面有7种类型的stream grouping
?
?