大数据学习之路(持续更新中...)

转载 2018年04月15日 15:20:12

转: https://www.cnblogs.com/xing901022/p/6195422.html

在16年8月份至今,一直在努力学习大数据大数据相关的技术,很想了解众多老司机的学习历程。因为大数据涉及的技术很广需要了解的东西也很多,会让很多新手望而却步。所以,我就在自己学习的过程中总结一下学到的内容以及踩到的一些坑,希望得到老司机的指点和新手的借鉴。

目前正在学习分布式理论和ZooKeeper

前言

在学习大数据之前,先要了解他解决了什么问题,能给我们带来什么价值。一方面,以前IT行业发展没有那么快,系统的应用也不完善,数据库足够支撑业务系统。但是随着行业的发展,系统运行的时间越来越长,搜集到的数据也越来越多,传统的数据库已经不能支撑全量数据的存储工作;另一方面,数据越来越多,单机的计算已经成为瓶颈。因此,基于分布式的大数据系统崭露头角。那么大数据系统里面都有什么东西呢?可以参考下面的图

在存储上,hdfs的分布式存储可以任意水平扩展,可以解决数据存储的难题。在计算上,从最初的MapReduce,把任务水平拆分,多台机器并行计算,再汇总结果;到基于Spark的内存计算,改造Mapreduce每次数据落盘以及编程方式的痛点。

有了存储和计算框架,周边就衍生出了很多管理、缓存相关的技术,比如:

  • yarn解决多租户资源调度的难题,
  • flume解决数据传输的难题,
  • sqoop解决分布式存储数据与传统DB数据之间的转换,
  • oozie解决了大数据计算任务的调度,
  • kafka提供了发布订阅机制的消息队列,
  • zookeeper可以帮助用户完成主备的选举,
  • hive在hdfs的基础上提供了数仓的功能,
  • hbase则基于hdfs实现列式数据库....

上面都是hadoop生态的,由于hadoop中计算模型普遍是mapreduce,但是它的编程风格和计算机制让很多人使用不便。因此后来spark逐渐代替了mapr成为主流的计算框架。Spark也有它自己的生态,但是由于hadoop更多更早的被应用到企业,所以spark也可以无缝的集成hadoop生态中的产品。spark更多只是扮演一个计算的框架,在这个框架上,提供了基本的计算模块core,基于sql的计算引擎spark sql,对接实时数据的流式计算spark streaming,算法相关的mlib以及图计算相关的graphx。

这些框架都在这个大数据生态中扮演了自己重要的角色,他们协同工作就可以帮助我们解决很多难题。由于我也是接触不久,所以就按照自己学习和工作涉及的内容,在下面按照各个章节进行介绍,后续也会持续的更新。希望对所有对大数据感兴趣的

学习必备

在学习大数据的过程中,需要具备的能力或者知识,在这里简单的罗列一下:

  • 语言基础:需要会使用shell脚本、java和scala(这俩语言主要是用于日常代码和阅读源代码)
  • 工具:IDE如eclipse或者idea,虚拟机和secureCRT连接工具
  • 书籍:《Hadoop权威指南》《Hadoop YARN权威指南》《Spark快速大数据分析》《从Paxos到zookeeper分布式一致性原理与实践》《Hive编程指南》其他的书籍阅读后再推荐吧
  • 博客:董的博客
  • 进阶:阅读官方文档(帮你了解它都能做什么)、源代码(帮你了解它是怎么做的)

hdfs

hdfs是大数据系统的基础,它提供了基本的存储功能,由于底层数据的分布式存储,上层任务也可以利用数据的本地性进行分布式计算。hdfs思想上很简单,就是namenode负责数据存储位置的记录,datanode负责数据的存储。使用者client会先访问namenode询问数据存在哪,然后去datanode存储;写流程也基本类似,会先在namenode上询问写到哪,然后把数据存储到对应的datanode上。所以namenode作为整个系统的灵魂,一旦它挂掉了,整个系统也就无法使用了。在运维中,针对namenode的高可用变得十分关键。

mapreduce

hive

hive基于hdfs构建了数据仓库系统,它以hdfs作为存储,依赖于数据库(嵌入式的数据库derby或者独立的数据mysql或oracle)存储表schema信息,并完成基于sql自动解析创建mapreduce任务(由于mapreduce计算效率比较差,目前官方推荐的是底层计算模型采用tez或者spark)。所以hive可以理解为:hdfs原始存储+DB Schema信息存储+SQL解析引擎+底层计算框架组成的数据仓库。

官方文档

spark

spark是现在大数据中应用最多的计算模型,它与java8的stream编程有相同的风格。封装了很多的计算方法和模型,以延迟执行的方式,在真正需要执行的时候才进行运算。既可以有效的做计算过程的容错,也可以改善我们的编程模型。

官方文档

oozie

oozie提供了大数据场景下各种任务的调度,比如shell脚本、spark任务、mapreduce任务、sqoop任务、hive查询以及普通的java程序等等。它的编译是生态圈里面最复杂的,由于以来的各个版本不同,需要指定特定的版本,因此没有成型的一键部署包。

官方文档

sqoop

sqoop支持基于sql或者表名把数据库中的数据存储到分布式环境中,数据库支持oracle\mysql等等,分布式环境可以是hdfs,hive,hbase等等,数据的导入时双向的,比如你可以把oracle中的数据读取存储到hdfs,也可以把hdfs的数据导入到oracle.

官方文档

hbase

yarn

在企业中,大数据的基础平台往往是多个用户共用的,那么如何管理资源的分配,就需要yarn来处理了。Yarn默认提供了三种资源分配的策略:

  • FIFO:先进先出,即按照用户提交任务的时间分配资源
  • Capacity:按照队列设置队列的大小
  • Fair Share:也是基于队列,只不过资源的粒度更小。

常见可以用于分配的资源可以是节点的数量,内存的大小,也可以是CPU核数。

官方文档

zookeeper

从名字来说他是动物园的管理员,实际上他是各个组件的协调者。可以实现类似主从选举、分布式事务、负载均衡等多种功能,比如HDFS HA方案、HBase的Metastore、Kafka里面的offset维护等等,由此可以见,zookeeper的重要性。

不过激发我学习zookeeper的主要原因还是因为它里面涉及了很多分布式协议的东西,从而能更好的理解分布式中的一些概念。所以,就跟着我一起深入浅出的学习吧!

主要参考:官方文档 《从Paxos到zookeeper分布式一致性原理与实践》

最后

上面是我学习hadoop和spark的分享,更重要的是学习历程的记录,希望有兴趣学习大数据的朋友可以通过我之前的学习路线获得一些思考和借鉴。后续也会逐步的完善,等到对整体有了比较全面的了解后,会专门针对安装部署、使用实践、原理解析进行介绍。

如果有任何疑问或者错误,可以在博客留言,博主会尽量及时回复。

作者:xingoo 
Github:https://github.com/xinghalo
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Hadoop2.7.1+Hbase1.2.1集群环境搭建(1)hadoop2.7.1源码编译

(1)hadoop2.7.1源码编译 http://aperise.iteye.com/blog/2246856 (2)hadoop2.7.1安装准备 http://aperise.it...
  • ichsonx
  • ichsonx
  • 2016-10-11 10:34:24
  • 672

【Hadoop】Hbase1.2.4在hadoop2.7.3中的可执行java代码

【hadoop】Hbase1.2.4在hadoop2.7.3中的可执行java代码
  • lsttoy
  • lsttoy
  • 2016-12-13 16:44:09
  • 1556

我的大数据学习之路

对于我们新手入门学习hadoop大数据存储的朋友来说,首先了解一下云计算和云计算技术是有必要的。下面先是介绍云计算和云计算技术的:              云计算,是一种基于互联网的计算方式,通过这...
  • prg_summer
  • prg_summer
  • 2017-03-31 19:05:25
  • 586

记录自己的大数据学习之路

function [cid,nr,centers] = mykmeans(x,k,weight,C) warning off [n,d] = size(x); [n1,...
  • u013530799
  • u013530799
  • 2017-10-18 21:02:03
  • 470

基于CDH5.4配置挂载HDFS文件系统

基于CDH5.4配置挂载HDFS文件系统
  • kwu_ganymede
  • kwu_ganymede
  • 2015-10-13 10:30:25
  • 894

Cloudera Manager5及CDH5安装指导(终极在线安装)

Cloudera Manager5及CDH5安装指导(终极在线安装)-----存储,学习,共享 问题导读: 1.Cloudera Manager5安装需要哪些环境要求? 2.哪些Linux系统上...
  • wulantian
  • wulantian
  • 2014-11-26 12:49:21
  • 16798

第000讲-第006讲 从1000个代码案例中学习人工智能和大数据实战

王家林大神人工智能大数据新课: From Zero to Hero – 从1000个代码案例中学习人工智能和大数据举例来说,我们在课程中有个人工智能项目,该项目使用循环神经网络的深度学习技术例如GRU...
  • duan_zhihua
  • duan_zhihua
  • 2017-11-22 19:53:30
  • 290

Ubuntu14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]

1、CDH介绍 1.1、什么是CDH和CM?   CDH一个对Apache Hadoop的集成环境的封装,可以使用Cloudera Manager进行自动化安装。    Cloudera...
  • qq_26840065
  • qq_26840065
  • 2016-08-18 10:59:08
  • 1188

Hadoop-2.4.1学习之以伪分布模式部署Hadoop

Hadoop-2.x版本与Hadoop-1.x除了整体架构上的变化之外,比如HDFS联盟,YARN等,目录结构、配置管理及执行脚本都有了很大的改变,具体哪些地方做了改变还需要通过持续地学习来掌握。在此...
  • sky_walker85
  • sky_walker85
  • 2014-07-17 14:00:55
  • 5280

大数据之路--阿里大数据实践

  • 2017年12月22日 22:13
  • 85.6MB
  • 下载
收藏助手
不良信息举报
您举报文章:大数据学习之路(持续更新中...)
举报原因:
原因补充:

(最多只允许输入30个字)