离线分析的大数据技术集锦

大数据相关体系梳理:今天小伙伴突然问我大数据都学习了些神马?就有了如下的对话,我也决定为她好好解答一下疑问。so,我们今天主要是以离线数据处理的技术为主。

1、zookeeper

大家知道大数据是对海量数据的处理,对于这种海量的存储一般就会用到分布式集群,然而分布式环境下常见的问题比如:集群管理、统一命名服务,信息配置管理,分布式锁等就需要一个技术来处理,这个技术就是zookeeper。zookeeper旨在在分布式应用中,提供可靠的、可扩展的、分布式的、可配置的协调机制来管理整个集群的状态。他的特性有:数据一致性,原子性,可靠性,实时性,顺序性,过半性。

2、Hadoop

Hadoop的集群系统为了解决Nutch的海量数据存储和处理的需求,可以解决大数据场景下的数据存储和处理的问题。一开始HDFS和MapReduce是作为Nutch的两个组件来使用,后来发现这两个组件不只是可以用在Nutch搜索,所以就单独取出来组成了Hadoop由HDFS、MapReduce、yarn组成。hadoopyou其中HDFS:用于分布式文件的存储,HDFS为了保证数据存储的可靠性(复本)和读取性能(切块),对数据进行切块后进行复制(保证复本的数量)并存储在集群的多个节点中。HDFS中存在一个名字节点NameNode和多个数据节点DataNode。MapReduce:用于数据的计算,Yarn:进行任务调度。是Hadoop2.0出现的。数据块(Block)是HDFS中存储文件的最基本的存储单位。

3、Flume

用于从不同的来源有效收集,聚集和移动大量的日志数据用以集中式管理的系统。用于从不同的来源有效收集,聚集和移动大量的日志数据用以集中式管理的系统。一条日志在flume中会被转换成一个JSON格式的串来传递,这个JSON串就是一个FlumeEvent。Flume Agent是一个基本的日志收集单元,由Source Channel和Sink组成。多个Agent之间还可以连接形成复杂的日志流动的网络。Source是消耗外部传递给他的事件,外部源将数据按照Flume Source能识别的格式将Flume事件发送给Flume Source,Channel是一个被动的存储,用来保持事件,直到由一个Flume Sink消耗。Sink代表外部数据存放位置。发送flume中的事件到指定的外部目标。

4、Hive

在对数据处理的时候必须会编程,必须对MR的底层实现有深入理解,开发调试比较麻烦,能不能用一种更加通用的简单的方式来实现对海量数据的处理sql,能不能用sql来实现对海量数据的处理-- hive就是这样的一个工具,HIVE就是在hadoop的基础上架设了一层sql操作的接口,使我们可以通过类sql的- hql -来操作hive,由hive将这些hql语句翻译成mapreduce来处理海量数据。所以,Hive的底层仍然是MapReduce,Hive主要是做一个翻译的工作。Hive是基于Hadoop的数据仓库工具所以Hive并不是一种数据库。

5、HBase

基于Hadoop数据库工具,是一种NoSQL的非关系型数据库不符合关系型数据库的范式,适合存储半结构化非结构化的数据,适合存储稀疏的数据空的数据不占用空间,面向列(族)进行存储,提供实时的增删改查的能力是一种真正的数据库产品,可以存储海量数据性能非常优良可以实现上亿条记录的毫秒级别的查询,但是不支持严格的事务控制只能在行级别保证事务。HBase使用表来存储数据但是表的结构和特点和传统的关系型数据库有非常大的区别。行键- RowKey:就相当于是HBase表中的主键,HBase中的所有的表都要有行键,HBase中的所有的数据都要按照行键的字典顺序排序后存储,对HBase表中的数据的查询只有三种方式:根据指定行键查询、根据指定的行键范围查询、全表扫描查询。

6、列族(簇) - ColumnFamily

HBase表中垂直方向保存数据的结构,列族是HBase表的元数据的一部分,需要在定义HBase表时就指定好表具有哪些个列族,列族中可以包含一个或多个列。列- Column:HBase表中列族里可以包含一个或多个列,列并不是HBase表的元数据的一部分,不需要在创建表时预先定义,而是可以在后续使用表时随时为表的列族动态的增加列。单元格和时间戳- Cell TimeStamp:在HBase表中,水平方向的行和垂直方向的列交汇就得到了HBase中的一个存储单元,而在这个存储单元中,可以存储数据,并且可以保存数据的多个版本,这些个版本之间通过时间戳来进行区分。单元格中的数据都以二进制形式存储,没有数据类型的区别。

7、Phoenix

HBase是一种非关系型的数据库不满足关系型数据库的范式所以无法使用sql和JDBC来进行操作,而Phoenix是在HBase基础上架构的SQL中间件,让我们可以通过SQL/JDBC来操作HBase。本质上就是在HBase表的基础上,增加一定的限制,稳定表的结构,加入sql翻译成HBase命令的机制,从而实现了类sql方式操作HBase。亲测不太好用,意见仅供参考。

以上就是离线数据分析的主要技术,下一期,将会为大家介绍事实数据分析技术等。

社群交流

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181208G140G700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券