美国队长
作者美国队长2017-07-10 11:26
研发工程师, Alibaba

大数据处理平台技术产品选型探讨核心问题集锦

字数 1496阅读 1373评论 0赞 3

提起“大数据”就不得不提起有关数据的处理,虽然有人说过大数据在数据质量方面的要求不比传统数据的要求那么严格,当然这也是分场景的断言,但是无论何时数据处理在大数据的生态中始终处于不可缺少的地位。

一般而言,数据处理包括前期数据的规整,比如时间格式化,字段的补齐等;中期,比如为了统计出某个指标,需要多报表关联进行数据逻辑处理等。而现阶段的有关数据的处理,有传统的ETL工具利用多线程处理文件的方式;有写MapReduce,有利用Hive结合其自定义函数,以及最近比较热的利用spark进行数据清洗等,可以说每种方式都有各自的使用场景。因此,我们在实际的工作中,需要根据不同的特定场景来选择数据处理方式。

在本次主题为“大数据处理平台技术选型探讨”在线技术交流活动,我们将重点围绕选型过程的中的具体问题进行互动探讨。核心探讨议题如下:

1.传统ETL ,Mapreduce,Hive,Spark等处理数据文件的场景分析

传统的ETL在数据量不大比如<20G的数据文件处理,他的优势在于他是可视化的步骤比较简单,上手比较快
Mapreduce对于数据量比较大的,处理数据业务逻辑变化不是很大,因为每次用java或者python等都得反复调试,比如淘宝底层日志解析,日志的格式基本都不会有太大的变化,写一次Mapreduce就稳定跑了
Hive采用类sql的方式,其底层也是转化为mapreduce运行,门槛比较低,只要会写sql就可以了,缺点是需要优化的话,你得对hive底层运行原理了解一些,优化的门槛比较高。

Spark 基于内存计算是sql,如果机器内存足够,使用spark能够更加快捷,应用场景比如比如实时推荐、聚类分析等等,虽说是sql但是还要写代码,所以没有hive方便,但是速度某些场景会比hive快,调优方面也是需要对spark底层运行原理有所了解

2.Hive在数据逻辑处理中如何利用自定义函数

自定义函数用在对表中某些字段进行逻辑上的简单处理,根据不用的添加方式,使用方式也有所不同,如果利用java编写自定义函数达成jar形式,可以每次在写sql脚本的时候利用add jar这个命令手动添加jar,也可以通过在hive-site.xml中配置hive.aux.jars.path指定到具体jar文件的路径,这样hive启动的时候就会自动加载jar。另外,在${hive_home}下创建auxlib,把jar拷贝其中
UDF、UDAF和UDTF,一般UDF比较常用使用的时候需要将数据集转换为spark dataframe。

3.Mapreduce,Hive ,Spark处理数据的优化策略

其实我更觉得他们的优化策略很相似,有错的地方还请指出。
a.数据倾斜,碰到小表跟大表的关联数据倾斜都是希望把小表在每个计算机器上复制一份放在内存当中只是调用的api不同,或者将倾斜的key加随机数前缀,实质也是为了数据分布均衡;
b.内存方面都希望最大限度的把数据放在内存中处理,hive底层就是mapreduce做计算,无论是map端还是中间map到reduce都涉及数据临时存储在内存中但是大部分还是存放在本地磁盘里面而且这个内存大小可以调整进行优化,而spark追求的是绝大数中间数据都在内存中,所以对内存大小也有要求;
c.提供处理task进程个数方面比如提高map,reduce的处理个数,spark设置每台机器的executor的进程数等。

4.大数据处理平台技术平台选择,是纯开源,还是纯商用,还是开源+商用?

这个问题的回复概况群里就是要基于成本跟公司的技术实力去觉得采用什么模式的大数据技术平台

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

3

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广