见:http://lxw1234.com/archives/2017/01/832.htm
至此,你的大数据平台底层架构已经成型了,其中包括了数据采集、数据存储与计算(离线和实时)、数据同步、任务调度与监控这几大模块。接下来是时候考虑如何更好的对外提供数据了。
第九章:我的数据要对外
通常对外(业务)提供数据访问,大体上包含以下方面:
- 离线:比如,每天将前一天的数据提供到指定的数据源(DB、FILE、FTP)等;
离线数据的提供可以采用Sqoop、DataX等离线数据交换工具。
- 实时:比如,在线网站的推荐系统,需要实时从数据平台中获取给用户的推荐数据,这种要求延时非常低(50毫秒以内)。
根据延时要求和实时数据的查询需要,可能的方案有:HBase、Redis、MongoDB、ElasticSearch等。
- OLAP分析:OLAP除了要求底层的数据模型比较规范,另外,对查询的响应速度要求也越来越高,可能的方案有:Impala、Presto、SparkSQL、Kylin。如果你的数据模型比较规模,那么Kylin是最好的选择。
- 即席查询:即席查询的数据比较随意,一般很难建立通用的数据模型,因此可能的方案有:Impala、Presto、SparkSQL。
这么多比较成熟的框架和方案,需要结合自己的业务需求及数据平台技术架构,选择合适的。原则只有一个:越简单越稳定的,就是最好的。
如果你已经掌握了如何很好的对外(业务)提供数据,那么你的“大数据平台”应该是这样的:
第十章:牛逼高大上的机器学习
关于这块,我这个门外汉也只能是简单介绍一下了。数学专业毕业的我非常惭愧,很后悔当时没有好好学数学。
在我们的业务中,遇到的能用机器学习解决的问题大概这么三类:
- 分类问题:包括二分类和多分类,二分类就是解决了预测的问题,就像预测一封邮件是否垃圾邮件;多分类解决的是文本的分类;
- 聚类问题:从用户搜索过的关键词,对用户进行大概的归类。
- 推荐问题:根据用户的历史浏览和点击行为进行相关推荐。
大多数行业,使用机器学习解决的,也就是这几类问题。
入门学习线路:
- 数学基础;
- 机器学习实战(Machine Learning in Action),懂Python最好;
- SparkMlLib提供了一些封装好的算法,以及特征处理、特征选择的方法。
机器学习确实牛逼高大上,也是我学习的目标。
那么,可以把机器学习部分也加进你的“大数据平台”了。
写给大数据开发初学者的话1
写给大数据开发初学者的话2
第三章:把别处的数据搞到Hadoop上
第四章:把Hadoop上的数据搞到别处去
写给大数据开发初学者的话3
第五章:快一点吧,我的SQL
第六章:一夫多妻制
写给大数据开发初学者的话4
第七章:越来越多的分析任务
第八章:我的数据要实时
写给大数据开发初学者的话5
第九章:我的数据要对外
第十章:牛逼高大上的机器学习