文档章节

SPARK全栈 全流程 大数据实战 之 技术选型篇

hblt-j
 hblt-j
发布于 2017/01/02 13:41
字数 3396
阅读 126
收藏 2

###一、技术选型,环境搭建安装及生产部署

####1.大数据研发调研和需求分析

如果 你已经或正在尝试搭建一套大数据环境或生产环境做研发和测试部署的话,如APACHE原生包或CDH和其它三方集成包,建议你先读读我的一次kylin安装测试经历《渣外有渣大数据OLAP平台之KYLIN起死回生篇》,可以帮助你了解HADOOP序列的安装使用的各种复杂烦锁配置和版本兼容问题以及各种坑,而且全在LINUX下操作,这无疑是你走进大数据领域的一个最大拌脚石和拦路虎;或是在一些所谓的云计算平台上操作,目前来说大多数都还处在比较基础功能集成和简单的工具封装,还需要太多的手动配置和其它模块集成等操作,才能完成和实现你的一个完整数据开发需求,要不就像databricks和IBM的bluemix一样需要付费。而你不想重复这个痛苦的过程,需要先了解一下大数据研发环境需要如下几方面需求:

  1. 数据支撑平台:大数据的基础存储(HDFS,S3,或是其它分步式存储平台或对象存储产品等),计算框架(MAPREDUCE,SPARK)集成平台,加基本的监控运维安全支持(如CDH或其它三方平台集成的监控管理平台,或是云平台)

  2. 研发测试工具链:一套数据开发测试各阶段的工具链的集成整合(ETL采集中间件及辅助处理工具:sqoop,flume,fluent,kafka,kettle,infomatica等;仓库工具:HIVE,SPARK SQL;实时流计算框架:storm,spark streaming,structured streaming;OLAP 平台cube技术: kylin等;BI工具:sas,spas,mahout,spark mlib,r,python,tableaue),还不包括研发过程管理和到生产发布环境的自动化部署管理

  3. 应用层输出整合:一序列数据输出(如数据集市:hbase,cassandra,parquet,mogodb;),报表生成(如smartBI,cravel),应用展现可视化等(如R,Python,还有html5的各种js框架)应用层工具框架

大数据本身是一个多行业融合的化身和产物,需要的的确不只是跨专业(计算机,互联网,信息处理,视觉处理,数理统计,机器学习,深度学习,人工智能)的人才,光从技术实现上技术框架工具整合集成管理都 是一复杂的工程。而刚入门的童鞋,如果说还在纠结使用哪种技术或开始学习哪种技术来实现大数据的话,那可能你对这个行业或这个体系还不了解,它绝对 不是 一种技术或一个框架就能解决 的问题。当然也有给大数据做行业或技术细分的,如做ETL的,做DW DM ,做OLAP,ODS,这些都是传统数仓技术学HADOOP+hive就好了;做在线处理或实时交易的,使用storm或spark streaming就可以搞定;而往往这些技术只能解决其中一部分主要问题,你不能说你做数仓就不展现不输出不分析,没有意义或只给word,pdf方案,价值不是太大,效率也不是太高;而你又不能说做线上处理实时交易,而不管理离线积累;或是你只做数据算法,分析工具,普通用户也用不了;所以人们和市场的需求往往是多样性的,需要的是全套采集存储计算分析管理一体化DMP系统,不仅傻瓜操作而且要能轻松易懂多样化的展现,要么就是要做完整据于行业和企业特点的个性化的BI商业应用,或是做像家电一样买回来,打开按下启动键或是说声HI,就可以使用和提供服务的AI产品.

####2.技术选型及测试

** docker镜像+云计算存储平台+sparkNotebook,使你直面需求和业务逻辑,迅速进入正式开发测试和生产部署阶段**

  • 「目前现状」多数大数据生产环境部署使用三方的像CDH这样的集成平台,一是提供稳定的版本集成,定制和功能扩展及加强外,甚至是多计算框架集成,在线配置统一管理等 ,还提供简单安装过程,集群技术部署监控管理,还有好用的web辅助操作平台HUE。基本上是基础输入出存储平台,集群监控管理,到开发测试工具集成,甚至包含一些简单展现工具方便分析调试处理结果,多数需求都 有了。唯一的缺点是只是对现有各种技术 的集成封装,如要据线上需求调整参数或架构那这一套还是要做大量的管理,hadoop序列产品的特点就是不是一家的,数据格式不兼容统一不说,版本兼容复杂配置还是逃不了,而且因为这点一些新版本和技术优化特性没发使用,版本往往靠后,瓶颈很容易出现,而hadoop本身的发展就不快,这也是阻碍它发展的主要拌脚石。

  • 而这里提供的「方案思路」是存储系统包含输入出系统如dw dm ods cube加速等与计算系统或其它系统如web应用,可视化,爬虫等分别隔离,独立出来。好处依次是系统和服务分解,基本的拆分思路解决大而难的复杂问题,其次分治,方便管理扩充维护,再次是专业的需求专业问题教给专业的技术和人资源来解决回答到更优的方案,也体现了现在流行的微服务理念。

  • 而「存储系统」建议直接使用线上成熟产品,如S3,云存储,db等,主要监控运维工作都交给云平台处理,而且自搭数据平台资源限制,要真实环境使用往往也需要线上平台做为扩充,而且真实环境这些基本运维管理可能根本达不到要求,安全,容错,备份,容灾,恢复,升迁不是一件简单的事;存储平台的自搭需求只有在自有敏感数据做预处理或脱敏时有必要,而且这块完全是一个内部研发级系统就可以了,要求不需要太高

  • 其次是「计算系统」直接用spark平台,数据采集预处理(各种数据结构api,dataframe,dataset,spark sql都可以做为数据处理工具) 实时(spark streaming可以处理各种高级或低级数据源)离线(可以对接各种数据库,日志,文件或不同格式的数据进行直接对接操作)计算 分析 统计(spark sql mlib graph x还有扩展的r python) 研发(scala python node.js)一站式解决,而且的他的集群管理,运维监控都有好的方案,管理相对容易。而这一切正是在受了一代数据平台多年发展的苦后,人们急切呼吁,市场急需变革而产生的新一代产物,重点是spark据于自身的优点和社区版本不断跌代和互联网计算机信息行业发展特点技术创新技术引导18月理论等渐渐偶合,它的性能吞吐量易用性易实施管理和多样需求至多技术栈隔合,数据格式统一等也越来越完善和被肯定。而有一些大公司现在开始加入和推进HADOOP体序的升级,也正是印证了在这个行业不发展不改变面对结果将是直接被人们忽略掉的特点,且再不发展推进可能现有平台的维护都可能后继无人了,而如今还有人一在用hadoop体序的惟一原因是一些大公司有些数据积累,一直沿用这套平台(有的还在沿用1.x的版本),而且大规模部署甚至在此基础 上建云平台和上层设施,而这一切变革意味着不仅是全套技术积累的废弃而且有利益的隔舍。而你挡不住历史的齿轮,这一切终将会到来!而还有些人说是因为JAVA语言的特点在使用hadoop,人员好找,这句话根本站不脚,真正用起hadoop系统的都 是用脚本做业务处理,没人会为做一步etl写一大堆java程序,而java对分步式数据集的处理并不善长,其次,从学习难度上来说,学java+hadoop一序列的框架,还有发展缺点和天花板,而学同样一门JVM语言scala,一个spark框架 就能解决一序列的问题,且发展前境无限,结果显然若见:1+n>1+1

  • 「其它子系统」如如web应用,可视化,爬虫等常见数据开发辅助平台这里就略了,据自己的实际场境如业务相关性,服务相关性和具体集群环境做选择和架构调整

  • 这里值得一提的是「自动化管理」使用docker技术做研发测试生产部署的隔离,跌代,集成管理,研发过程管理或线上服务治理 ,自动化管理 ,和架构演进,加云平台的一站式支持,这也是新一代CI,CD,DEVOS,微服务理念的趋势,说到云平台除国际知名AWS ALIYUN对容器不断支持外,还有databricks,bluemix等知名数据服务商,国内容器云优秀的也有不少,像时速云等产品做的就不错,思路和本地化方面做的非常好,是个不错的选择

  • 还有今天的主角儿新一代「大数据开发环境」spark notebook,与其它在线平台比如databricks,bluemix等开源免费不说,和hue及python notebook开源产品比,除支持在线编辑sql,脚本执行,调试和日志收集回显,markdown集成,各种页面快捷等(这已经是传统开发工具无法做到的,在线集群上调试运行代码,免去分步式程序和算法模型,需打包发布提交集群,测试参数优化和算法改进后再打包发布等常见过程),而且直接集成SBT包管理,cell里命令管理linux系统,这还是辅助的,重点各种数据可视化组件直接调用还可以cell里自定义,(不仅不用回linux界面,连可视化都不需要学r,python,html5框架整合了),还有spark各个模块的用例直接操作运行查看效果,还有多种内核版本集成,可在一平台管理不同版本下的代码和数据测试,而且有scala脚本md pdf等导出和运行进程及集群简单状况管理,还有运行job状态,errlog,和chat room(这个偶然发现还没试用过),惟一发现好像代码提示不是太好用,不知是不是我的离线操作原因,还有如果再加脑图,建模,制图工具在集成的话这个就是一个简洁版的dmp平台了,呵呵

  • 关于部署和安装请参照官网spark-notebook.io,提供多种集成版本选择和tar,zip,gz和docker下载。如果你和我一样是使用docker直接在官网里直接选好版本,一条docker run 命令bulild运行的话(官网说的是docker pull ,docker run 两条命令5秒钟搞定,you known 使用一条即可,实际情况可能国内网络环境问题我下了三四次),后通过自带各模块的例子按几下shift+enter,直接看到结果,文档都无需查看直接上手,上面都是一时间试用总结。文档也许在源码包里吧,官网也没有看到,只有版本选择下载和提示他们在招人加入,好像还是个国内人主持开发或发启参与 的,非常 不错。在我的使用和体验中非常流畅,相比其它产品有过之而无不极。至此如果说HUE和它集成监控还是你觉得在hadoop体序下值得留念和赞赏的话,此刻你可以说spark已经在各方面全面超越,好了,为了不让多数人灰心和失望和引发无谓口水战,加一句「个人观点,仅供参考」!此博文的编写及后续实战都直接在spark notebook上实现,运行调试结果,日志输出和展现效果都将借助他一目了然全然成显,然 后在makedown导出原样转贴至blog。

    如果 在这里使你感觉所帮助 或表示赞同的话,欢迎打赏,也欢迎留言回贴收藏转载支持和指正,3Q。

© 著作权归作者所有

hblt-j
粉丝 24
博文 218
码字总数 73000
作品 0
海淀
架构师
私信 提问
年薪百万的大数据开发工程师的入门书单(收藏)

前言 你们是不是都听过一句话:谷歌比你自己更了解你 事实上,这句话并不是毫无根据,我们周边的一切无不体现数据的重要性,你想想,我们对自己的看法会受到多种主观和客观的因素影响,但谷歌...

风火大数据
2018/07/21
0
0
Spark部署及技术选型

Spark部署及技术选型 在飞速发展的云计算大数据时代,Spark是继Hadoop之后,成为替代Hadoop的下一代云计算大数据核心技术,目前Spark已经构建了自己的整个大数据处理生态系统,如流处理、图技...

Spark亚太研究院
2014/07/01
2.2K
4
SequoiaDB x Spark 新主流架构引领企业级应用

6月,汇集当今大数据界精英的Spark Summit 2017盛大召开,Spark作为当今最炙手可热的大数据技术框架,向全世界展示了最新的技术成果、生态体系及未来发展规划。 巨杉作为业内领先的分布式数据...

巨杉数据库
2017/07/03
6
0
OSC 第 65 期高手问答 — Spark 企业级实战

OSCHINA 本期高手问答(3月23日-3月29日)我们请来了 @王家林 (王家林)为大家解答关于 Spark 开发方面的问题。 王 家林,Spark 亚太研究院院长和首席专家,当今云计算领域最火爆的技术Docke...

叶秀兰
2015/03/23
6.4K
22
【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第1节②

三、你为什么需要Spark; 你需要Spark的十大理由: 1,Spark是可以革命Hadoop的目前唯一替代者,能够做Hadoop做的一切事情,同时速度比Hadoop快了100倍以上: Logistic regression in Hadoo...

Spark亚太研究院
2014/12/16
423
2

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud 笔记之Spring cloud config client

观察者模式它的数据的变化是被动的。 观察者模式在java中的实现: package com.hxq.springcloud.springcloudconfigclient;import org.springframework.context.ApplicationListener;i...

xiaoxiao_go
昨天
6
0
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
10
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部