⼤数据开发过程中的重难点有哪些
⼤数据开发⼯程师,很多⼈都向往的职业,但总有这样那样的理由,在逼迫这⾃⼰放弃。明明知道⼤数据良好的前景,明明知道学完⼤数据可以到⼀份很好的⼯作,但就是不会对⾃⼰下狠⼼。总结了学⽣在学习⼤数据开发过程中遇到的难点,帮助⼤家逐⼀攻克难关!
⼤数据开发,有4个阶段:
1、数据采集
数据采集有线上和线下两种⽅式,线上⼀般通过爬⾍、通过抓取,或者通过已有应⽤系统的采集,在这个阶段,我们可以做⼀个⼤数据采集平台,依托⾃动爬⾍(使⽤python或者nodejs制作爬⾍软件),ETL⼯具、或者⾃定义的抽取转换引擎,从⽂件中、数据库中、⽹页中专项爬取数据,如果这⼀步通过⾃动化系统来做的话,可以很⽅便的管理所有的原始数据,并且从数据的开始对数据进⾏标签采集,可以规范开发⼈员的⼯作。并且⽬标数据源可以更⽅便的管理。
数据采集的难点在于多数据源,例如mysql、postgresql、sqlserver 、 mongodb 、sqllite。还有本地⽂件、excel统计⽂档、甚⾄是doc⽂件。如何将他们规整的、有⽅案的整理进我们的⼤数据流程中也是必不可缺的⼀环。
2、数据汇聚
数据的汇聚是⼤数据流程关键的⼀步,你可以在这⾥加上数据标准化,你也可以在这⾥做数据清洗,数据合并,还可以在这⼀步将数据存档,将确认可⽤的数据经过可监控的流程进⾏整理归类,这⾥产出的所有数据就是整个公司的数据资产了,到了⼀定的量就是⼀笔固定资产。
数据汇聚的难点在于如何标准化数据,例如表名标准化,表的标签分类,表的⽤途,数据的量,是否有数据增量?,数据是否可⽤? 需要在业务上下很⼤的功夫,必要时还要引⼊智能化处理,例如根据内容训练结果⾃动打标签,⾃动分配推荐表名、表字段名等。还有如何从原始数据中导⼊数据等。
3、数据转换和映射
经过数据汇聚的数据资产如何提供给具体的使⽤⽅使⽤?在这⼀步,主要就是考虑数据如何应⽤,如何将两个?三个?数据表转换成⼀张能够提供服务的数据。然后定期更新增量。
经过前⾯的那⼏步,在这⼀步难点并不太多了,如何转换数据与如何清洗数据、标准数据⽆⼆,将两个字段的值转换成⼀个字段,或者根据多个可⽤表统计出⼀张图表数据等等。
4、数据应⽤
数据的应⽤⽅式很多,有对外的、有对内的,如果拥有了前期的⼤量数据资产,通过restful API提供给⽤户?或者提供流式引擎 KAFKA 给应⽤消费? 或者直接组成专题数据,供⾃⼰的应⽤查询?这⾥对数据资产的要求⽐较⾼,所以前期的⼯作做好了,这⾥的⾃由度很⾼。
⼤数据开发的难点主要是监控,怎么样规划开发⼈员的⼯作?开发⼈员随随便便采集了⼀堆垃圾数据,并且直连数据库。 短期来看,这些问题⽐较⼩,可以矫正。 如果你对⼤数据开发感兴趣,想系统学习⼤数据的话,可以加⼊⼤数据技术学习交流扣:458数字345数字782获取学习资源,但是在资产的量不断增加的时候,这就是⼀颗定时,随时会引爆,然后引发⼀系列对数据资产的影响,例如数据混乱带来的就是数据资产的价值下降,客户信任度变低。
⼤数据学习路线
大数据etl工具有哪些java(Java se,javaweb)
Linux(shell,⾼并发架构,lucene,solr)
Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume)
机器学习(R,mahout)
Storm(Storm,kafka,redis)
Spark(scala,spark,spark core,spark sql,spark streaming,spark mllib,spark graphx)
Python(python,spark python)
云计算平台(docker,kvm,openstack)
名词解释
⼀、Linux
lucene: 全⽂检索引擎的架构
solr: 基于lucene的全⽂搜索服务器,实现了可配置、可扩展并对查询性能进⾏了优化,并且提供了⼀个完善的功能管理界⾯。
⼆、Hadoop
HDFS: 分布式存储系统,包含NameNode,DataNode。NameNode:元数据,DataNode。DataNode:存数数据。
yarn: 可以理解为MapReduce的协调机制,本质就是Hadoop的处理分析机制,分为ResourceManag
er NodeManager。MapReduce: 软件框架,编写程序。
Hive: 数据仓库 可以⽤SQL查询,可以运⾏Map/Reduce程序。⽤来计算趋势或者⽹站⽇志,不应⽤于实时查询,需要很长时间返回结果。
HBase: 数据库。⾮常适合⽤来做⼤数据的实时查询。Facebook⽤Hbase存储消息数据并进⾏消息实时的分析
ZooKeeper: 针对⼤型分布式的可靠性协调系统。Hadoop的分布式同步等靠Zookeeper实现,例如多个NameNode,active standby 切换。
Sqoop: 数据库相互转移,关系型数据库和HDFS相互转移
Mahout: 可扩展的机器学习和数据挖掘库。⽤来做推荐挖掘,聚集,分类,频繁项集挖掘。
Chukwa: 开源收集系统,监视⼤型分布式系统,建⽴在HDFS和Map/Reduce框架之上。显⽰、监视、分析结果。
Ambari: ⽤于配置、管理和监视Hadoop集,基于Web,界⾯友好。
⼆、Cloudera
Cloudera Manager: 管理 监控 诊断 集成
Cloudera CDH:(Cloudera's Distribution,including Apache Hadoop) Cloudera对Hadoop做了相应的改变,发⾏版本称为CDH。Cloudera Flume: ⽇志收集系统,⽀持在⽇志系统中定制各类数据发送⽅,⽤来收集数据。
Cloudera Impala: 对存储在Apache Hadoop的HDFS,HBase的数据提供直接查询互动的SQL。
Cloudera hue: web管理器,包括hue ui,hui server,hui db。hue提供所有CDH组件的shell界⾯的接⼝,可以在hue编写mr。
三、机器学习/R
R: ⽤于统计分析、绘图的语⾔和操作环境,⽬前有Hadoop-R
mahout: 提供可扩展的机器学习领域经典算法的实现,包括聚类、分类、推荐过滤、频繁⼦项挖掘等,且可通过Hadoop扩展到云中。
四、storm
Storm: 分布式,容错的实时流式计算系统,可以⽤作实时分析,在线机器学习,信息流处理,连续性计算,分布式RPC,实时处理消息并更新数据库。
Kafka: ⾼吞吐量的分布式发布订阅消息系统,可以处理消费者规模的⽹站中的所有动作流数据(浏览,搜索等)。相对Hadoop的⽇志数据和离线分析,可以实现实时处理。⽬前通过Hadoop的并⾏加载机制来统⼀线上和离线的消息处理
Redis: 由c语⾔编写,⽀持⽹络、可基于内存亦可持久化的⽇志型、key-value型数据库。
五、Spark
Scala: ⼀种类似java的完全⾯向对象的编程语⾔。
jblas: ⼀个快速的线性代数库(JAVA)。基于BLAS与LAPACK,矩阵计算实际的⾏业标准,并使⽤先进的基础设施等所有的计算程序的ATLAS艺术的实现,使其⾮常快。
Spark: Spark是在Scala语⾔中实现的类似于Hadoop MapReduce的通⽤并⾏框架,除了Hadoop MapReduce所具有的优点,但不同于MapReduce的是job中间输出结果可以保存在内存中,从⽽不需要读写HDFS,因此Spark能更好的适⽤于数据挖掘与机器学习等需要迭代的MapReduce算法。可以和Hadoop⽂件系统并⾏运作,⽤过Mesos的第三⽅集框架可以⽀持此⾏为。
Spark SQL: 作为Apache Spark⼤数据框架的⼀部分,可⽤于结构化数据处理并可以执⾏类似SQL的Spark数据查询
Spark Streaming: ⼀种构建在Spark上的实时计算框架,扩展了Spark处理⼤数据流式数据的能⼒。
Spark MLlib: MLlib是Spark是常⽤的机器学习算法的实现库,⽬前(2014.05)⽀持⼆元分类,回归,聚类以及协同过滤。同时也包括⼀个底层的梯度下降优化基础算法。MLlib以来jblas线性代数库,jblas本⾝以来远程的Fortran程序。
Spark GraphX: GraphX是Spark中⽤于图和图并⾏计算的API,可以在Spark之上提供⼀站式数据解决⽅案,可以⽅便且⾼效地完成图计算的⼀整套流⽔作业。
Fortran: 最早出现的计算机⾼级程序设计语⾔,⼴泛应⽤于科学和⼯程计算领域。
BLAS: 基础线性代数⼦程序库,拥有⼤量已经编写好的关于线性代数运算的程序。
LAPACK: 著名的公开软件,包含了求解科学与⼯程计算中最常见的数值线性代数问题,如求解线性⽅程组、线性最⼩⼆乘问题、特征值问题和奇异值问题等。
ATLAS: BLAS线性算法库的优化版本。
Spark Python: Spark是由scala语⾔编写的,但是为了推⼴和兼容,提供了java和python接⼝。
六、Python
Python: ⼀种⾯向对象的、解释型计算机程序设计语⾔。
七、云计算平台
Docker: 开源的应⽤容器引擎
kvm: (Keyboard Video Mouse)
openstack:  开源的云计算管理平台项⽬

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。