JAVA开发搞了一年多的大数据,究竟干了点啥( 五 )

<https://help.aliyun.com/document_detail/441938.html>中看来了,我就不用我笨拙的语言来编排了,放在下面供大家探讨一下:

  • 离线ETL
    离线ETL主要应用于数据仓库,对大规模的数据进行抽取(Extract)、转换(Transform)和加载(Load),其特点是数据量大,耗时较长,通常设置为定时任务执行 。
  • 在线数据分析(OLAP)
    在线数据分析主要应用于BI(Business Intelligence) 。分析人员交互式地提交查询作业,Spark可以快速地返回结果 。除了Spark,常见的OLAP引擎包括Presto和Impala等 。Spark 3.0的主要特性在EMR中的Spark 2.4版本已支持,更多特性详情请参见Spark SQL Guide 。
  • 流计算
    流计算主要应用于实时大屏、实时风控、实时推荐和实时报警监控等 。流计算主要包括Spark Streaming和Flink引擎,Spark Streaming提供DStream和Structured Streaming两种接口,Structured Streaming和Dataframe用法类似,门槛较低 。Flink适合低延迟场景,而Spark Streaming更适合高吞吐的场景,详情请参见Structured Streaming Programming Guide 。
  • 机器学习
    Spark的MLlib提供了较丰富的机器学习库,包括分类、回归、协同过滤、聚合,同时提供了模型选择、自动调参和交叉验证等工具来提高生产力 。MLlib主要支持非深度学习的算法模块,详情请参见Machine Learning Library (MLlib) Guide 。
  • 图计算
    Spark的GraphX支持图计算的库,支持丰富的图计算的算子,包括属性算子、结构算子、Join算子和邻居聚合等 。详情请参见GraphX Programming Guide 。
2.3 MapReduce?Hadoop MapReduce:一个分布式的离线并行计算框架,它是Hadoop全家桶的一部分,它的思想是分而治之,也就是说将一个大的复杂的问题切割成一个个小的问题加以解决,最后再汇总,这从MapReduce的字面就可以看出来 。MapReduce处理任务过程是分为两个阶段的:
  • Map阶段:Map阶段的主要作用是“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理 。Map阶段的这些任务可以并行计算,彼此间没有依赖关系 。
  • Reduce阶段:Reduce阶段的主要作用是“合”,即对map阶段的结果进行全局汇总 。
下面从一张图例来看下MapReduce计算的处理过程:
JAVA开发搞了一年多的大数据,究竟干了点啥

文章插图
3.由数据同步想到的? 所谓大数据,必然和形形色色的数据表打交道,但是要清楚一点,对于一个规模还算可以的企业来讲,那下面的项目组肯定是一片一片的,他们之间的数据没有办法做到百分之百的共享,有时你想要的去做一些数据的分析,可能就需要其他项目组甚至第三方企业的支持,从别的渠道去拿到数据进行使用,因此,数据同步接入变成了大数据开发中必不可少的工作 。
? 其实数据同步接入的方式有很多,如果有数据库的权限,可以直接使用大数据平台自带的同步组件,编写一定的规则,配置好接入的频率,将数据接入过来;如果是第三方外部企业的数据,为了安全起见,我们通常也会选择接口的方式进行数据的接入,再同步至大数据平台;当然,使用消息中间件也是很不错的方式,比如Kafka,但是这东西总归有些严格意义上的限制,很多企业为了安全是不会对外暴露自身的Kafka服务地址的;还有一些数据量过大的情况,可以考虑sftp服务器的方式,直接将数据上传到指定的服务器的文件夹里,不过这个总归有些依赖于手工支持的弊端在里面,不过据说好像也可以编写脚本完成自动化的上传和拉取,对于我这个搞Java的来讲,这方面的解决策略还是不太懂的;其他方法也可以使用DolphinScheduler(DS)里面的一些小组件,去执行一些脚本来完成同步,当然脚本的编写就类似于

经验总结扩展阅读