分享以下大数据处理工具 大数据处理工具有哪些?( 三 )


Apache Atlas官网:https://atlas.apache.org/
Apache Atlas是数据治理体系中比较重要的一个产品,它主要负责元数据的管理,这个元数据就是指用来描述数据的数据,比如数据的类型、名称、属性、作用、生命周期、有效范围、血缘关系等等,在大数据系统中,元数据有着非常大的价值,一个比较成熟的数据系统中一般都会存在着这么一个元数据管理平台,元数据除了能让业务人员更加方便快捷理解我们的数据和业务,也有着帮助我们提升数据质量,消除信息不对称,以及快速定位数据问题等作用,所以如何有效的利用好这些元数据,使这些数据产生更大的价值,也是很多人一直在思考的事情 。 现在Atlas支持的数据源有Hive、Sqoop、Storm,其导入方式有HOOK和Batch两种方式,首次使用是Batch的同步方式,之后Atlas会利用HOOK主动获取到数据源的变化,并更新自身数据 。
Apache Kylin官网:http://kylin.apache.org/
Kylin是一个为OLAP场景量身定制的分布式数据仓库产品,提供多维分析的功能,并可以和很多BI分析工具无缝对接,比如Tableau、Superset等 。 Kylin提供了前端平台,使用者可以在该平台上去定义自己的数据维度,Kylin会定时完整分析所需数据的预计算,形成多个Cube,并将之保存在HBase中,所以部署Kylin的时候需要HBase环境的支持 。 在数据与计算的时候,对其所在设备的资源消耗也比较大 。
Apache Hive & Tez官网:https://hive.apache.org/
官网:https://tez.apache.org/
Hive应该是最有名气的数据仓库工具了吧,他将HDFS上的数据组织成关系型数据库的形式,并提供了HiveSQL进行结构化查询,使得数据分析人员可以从传统的关系型数据库几乎无缝的过渡到HDFS上,但其个别函数和传统SQL还是有区别的,并且默认也不支持update和delete操作 。 但开发人员可以开发UDF,为HiveSQL扩充属于自己的功能函数 。 Hive本身的计算是基于MapReduce的,后来为了应对SparkSQL的出现,开发组推出了Hive on Spark,使得SQL的解释、分析、优化还是在Hive上,而执行阶段交由Spark去完成,从而以达到和SparkSQL近似的速度 。
Tez是对Hive的另一项优化,为其引入了DAG的概念,增加任务并行度从而提升Hive的查询速度,但其本质仍旧是MapReduce,所以提升效果相比Hive on Spark来讲并不足够明显 。
Apache Presto官网:https://prestodb.io/
Presto是由facebook公司开发的一款分布式查询引擎,其主要特点是支持了非常多的Connector,从而实现在一个平台上连接多个数据源,并且可以将这些数据源的内容进行聚合计算,同时Presto也支持使用者自行开发新的Connector 。 并且Presto的计算过程全程是基于内存的,所以速度也是非常的快,但其实Presto也只是针对个别计算场景的性能优化会非常明显,网上有非常详细的分析文章 。 之前使用该工具是为了将离线数仓和实时数仓的数据进行联合查询,提供给实时数据平台使用 。
【分享以下大数据处理工具 大数据处理工具有哪些?】在使用过程中我觉得有点不好的地方有三点 。 一是因为Presto基于内存计算,所以在资源紧张的情况下经常Crash导致任务失败 。 二是Presto任务为串行提交,所以会出现大任务阻塞小任务的情况出现 。 或许通过调参可以解决该问题吧,但没有再深入调研了 。 三是没有找到一个比较好的Web平台去查询Presto,网上有Hue通过PostgreSQL去链接Presto的方案,觉得有点麻烦,看上去比较成熟的Airpal平台也已不再更新了 。 最后使用了yanagishima,基本功能可以满足,但该平台没有用户管理功能,没法控制权限 。
Apache Parquet & Orc官网:https://parquet.apache.org/
官网:https://orc.apache.org/
Parquet和ORC是两种比较应用比较多的列式存储格式,列式存储不同于传统关系型数据库中行式存储的模式,这种主要的差别可能由于联机事务处理(OLTP)和联机分析处理(OLAP)的需求场景不同所造成的 。 在OLTP场景多是需要存储系统能满足快速的CRUD,这种操作对象都是以行为单位的 。 而在OLAP场景下,主要的特征是数据量巨大,而对实时性的要求并不高 。 而列式存储正式满足了这一需求特征 。 因为当数据以列的方式存储,在查询的时候引擎所读取的数据量将会更小,而且同一列的数据往往内容类似,更加便于进行数据压缩,但列式存储不适于更新和删除频繁的场景 。 Parquet和Orc同为列式存储,但他们的存储格式并不相同,这种差异造成了两者在存储不同类型的数据时所出现的性能差异,从网上的一些文章看,Orc的性能要比Parquet好一点,但是Impala是不支持Orc的,并且诸如Delta Lake这种数据湖产品,也是基于Parquet去做的 。 所以在选择采用哪种列式存储格式时,还是要根据自身的业务特点来决定 。

推荐阅读