大数据在线分析处理和常用工具
1. Flume
- Memory Channel
- File Channel
Spark (Spark Streaming) 和 Storm 专注于将数据按照时间窗口进行聚合和处理。用来解决在线分析处理特点,数据需要尽快的得到处理的问题。所以经常被称作流式处理框架。
两者的区别如下:
- Storm 提供比 Spark 更加实时的流式处理(Storm来一条,处理一条);
- Spark 提供比Storm更加多的服务,Spark 逐渐已经形成类似 Hadoop 的生态圈了。
目前 Spark 有三种集群管理模式:
- Standalone:一种简单的集群管理,其包括一个很容易搭建集群的Spark;
- Apache Mesos :一种通用的集群管理,可以运行Hadoop MapReduce和服务应用的模式;
- Hadoop YARN : Hadoop2.0中的资源管理模式。
其中第二种和第三种都是使用 Spark 做任务管理和调度,Mesos 和 Yarn 做资源管理和调度
Spark+YARN是最有前景的一种技术方案。
- topology:一个拓扑是一个个计算节点组成的图,每个节点包换处理的逻辑,节点之间的连线表示数据流动的方向;
- spout:表示一个流的源头,产生tuple;
- bolt: 处理输入流并产生多个输出流,可以做简单的数据转换计算,复杂的流处理一般需要经过多个bolt进行处理。
HBase 专注于大数据存储和提供查询,用来解决在线分析处理特点,数据经过处理后数据量依然巨大的存储和展现问题。类似的大数据开源系统有 Cassandra 。
两者区别如下:
- Cassandra 满足可用性和分区容忍性,允许数据的不一致(不同客户端可能看到不一样的情况)、 Cassandra 提供了类似 SQL 的 CQL 查询语言,查询方便;
- HBase 满足一致性和分区容忍性,拥有强大的记录集一致性。HBase不支持 SQL 需要使用者部署第三方服务来支持 SQL (如 Apache Phoenix);
组成部件说明:
- Client:使用HBase RPC机制与HMaster和HRegionServer进行通信;
- Zookeeper: 存储hbase:meta 表等元数据信息;HRegionServer把自己以Emphedral方式注册到Zookeeper中, - HMaster随时感知各个HRegionServer的健康状况;Zookeeper避免HMaster单点问题;
- HMaster:
主要负责Table和Region的管理工作:
1) 管理用户对表的增删改查操作
2) 管理HRegionServer的负载均衡,调整Region分布
3) Region Split后,负责新Region的分布
4) 在HRegionServer停机后,负责失效HRegionServer上Region迁移
- HRegionServer:HBase中最核心的模块,主要负责响应用户I/O请求,向HDFS文件系统中读写数据:
HRegionServer管理一些列HRegion对象;
1) 每个HRegion对应Table中一个Region,HRegion由多个HStore组成;
2) 每个HStore对应Table中一个Column Family的存储;
Region的 Split 和 StoreFile 的 Compact:
Client写入 -> 存入MemStore,一直到MemStore满 -> Flush成一个StoreFile,直至增长到一定阈值 -> 触发Compact合并操作 -> 多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除 -> 当StoreFiles Compact后,逐步形成越来越大的StoreFile -> 单个StoreFile大小超过一定阈值后,触发Split操作,把当前Region Split成2个Region,父Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer 上,使得原先1个Region的压力得以分流到2个Region上。
由此过程可知,HBase只是增加数据,有所得更新和删除操作,都是在Compact阶段做的,所以,用户写操作只需要进入到内存即可立即返回,从而保证I/O高性能。对大数据感兴趣的可以到科多大数据进行咨询~