签到成功

知道了

CNDBA社区CNDBA社区

Hadoop大数据学习路线

2019-01-05 20:59 2125 0 转载 Hadoop
作者: dave

作为目前主流的大数据处理技术,市场上很多公司的大数据业务都是基于Hadoop开展,而且对很多场景已经具有非常成熟的解决方案。作为开发人员掌握Hadoop及其生态内框架的开发技术,就是进入大数据领域的必经之路。

1 Hadoop概念

Apache™Hadoop®项目开发了开源软件,用于可靠,可扩展的分布式计算。

http://www.cndba.cn/cndba/dave/article/3225

Apache Hadoop是一个框架,该框架允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。 它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。 库本身不依赖于硬件来提供高可用性,而是被设计用来检测和处理应用程序层的故障,因此可以在单台计算机都容易出现故障情况下,也能让计算机集群为顶层应用提供高可用性服务。

很多人都知道,Hadoop诞生的背景,源于2003年谷歌发表的三篇论文:

(1)GFS-Google FileSystem:描述数据存储的思想,解决了海量数据存储的问题。
(2)MapReduce:分布式运算系统,解决了海量数据分布式计算的问题。
(3)Bigtable:快速查询分布式数据库,解决了海量数据快速查询的问题。

称作“Hadoop之父”的Doug Cutting正是基于上面三篇论文开启了Hadoop这个伟大的项目,Hadoop解决海量数据的存储以及海量数据的分析计算,用户可以在不了解分布式底层细节的情况下,开发应用程序。充分利用集群的资源进行高速运算和存储。

1.1 Hadoop的优点

Hadoop本身就是为大数据而定制的。http://www.cndba.cn/cndba/dave/article/3225

  1. 高扩展性。Hadoop不同于传统关系型数据库(如MySQL在数据量大时线性扩展机器资源后,性能会有瓶颈),集群是可以线性扩容的,而且性能甚至会更好,最多可扩展上万台。
  2. 高效性。Hadoop分布式储存,HDFS能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快 。
  3. 高容错性。Hadoop多副本储存,并且计算时能够自动将失败的任务重新分配 。
  4. 低成本。与一体机、商用数据仓库相比,Hadoop是开源的,软件/硬件成本都比较低 。

1.2 狭义Hadoop和广义Hadoop

狭义Hadoop:指用于大数据分布式存储(HDFS)、分布式计算(MapReduce)和资源调度(YARN)的框架平台,这三个组件属于Hadoop最基础的组件,只能做离线批处理,功能有限。
广义Hadoop:指Hadoop生态系统。Hadoop是作为其中最重要也是最基础的部分。生态系统中会有各种组件来解决特定领域或者不同场景的问题。而且这些组件在不断的更新、扩张。


如果按照数据流程处理/功能划分来看,大致可以分分类。

  • 数据采集
    如Flume、Sqoop
  • 数据储存
    如HDFS、HBase列式储存、Hive离线数仓等
  • 数据计算分析
    又分离线计算和实时计算
    离线:MR、Spark core、Impala
    实时:SparkStreaming、Streaming、Flink等
  • 机器学习
    Apache Mahout、Spark MLlib
  • 其他工具管理、调度、中间件等
    如Zookeeper、Yarn、Mesos、Hue、Oozie、Azkaban、Dolphinscheduler、Kafka等

PS:Hadoop生态的大部分组件都和动物有关,可以细细体会下这些外国人取名字的想法。
http://www.cndba.cn/cndba/dave/article/3225

1 第一阶段:Hadoop生态架构技术

学习完第一阶段的知识,已经可以从事大数据架构相关的工作,可以在企业中负责某些或某个的开发与维护工作。

1.1 语言基础

Java:掌握javase知识,多理解和实践在Java虚拟机的内存管理、以及多线程、线程池、设计模式、并行化就可以,不需要深入掌握。
Linux:系统安装(命令行界面和图形界面)、基本命令、网络配置、Vim编辑器、进程管理、Shell脚本、虚拟机的菜单熟悉等等。
Python:基础语法,数据结构,函数,条件判断,循环等基础知识。

环境准备
VMware虚拟机、Linux系统(Centos6.5)、Hadoop安装包,这里准备好Hadoop完全分布式集群环境。

1.2 Hadoop:

Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架构。

1.3 MapReduce

MapReduce分布式离线计算框架,是Hadoop核心编程模型。主要适用于大批量的集群任务,由于是批量执行,故时效性偏低。

1.4 HDFS1.0/2.0

Hadoop分布式文件系统(HDFS)是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

1.5 Yarn(Hadoop2.0)

前期了解即可,Yarn是一个资源调度平台,主要负责给任务分配资源。Yarn是一个公共的资源调度平台,所有满足条件的框架都可以使用Yarn来进行资源调度。http://www.cndba.cn/cndba/dave/article/3225

1.6 Hive

是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

1.7 Pig

Apache Pig:是一个基于Hadoop的大规模数据分析工具,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。http://www.cndba.cn/cndba/dave/article/3225

1.8 HBase

Apache HBase: 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

1.9 Sqoop

Apache Sqoop: 是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

1.10 Mahout

Apache Mahout:是基于Hadoop的机器学习和数据挖掘的一个分布式框架。Mahout用MapReduce实现了部分数据挖掘算法,解决了并行挖掘的问题。

1.11 Spark

Spark 是专为大规模数据处理而设计的快速通用的计算引擎,其是基于内存的迭代式计算。Spark 保留了MapReduce 的优点,而且在时效性上有了很大提高。

1.12 Spark Streaming

Spark Streaming是实时处理框架,数据是一批一批的处理。

1.13 Spark Hive

基于Spark的快速Sql检索。Spark作为Hive的计算引擎,将Hive的查询作为Spark的任务提交到Spark集群上进行计算,可以提高Hive查询的性能。http://www.cndba.cn/cndba/dave/article/3225

1.14 Storm

Storm是一个实时计算框架,和MR的区别就是,MR是对离线的海量数据进行处理,而Storm是对实时新增的每一条数据进行处理,是一条一条的处理,可以保证数据处理的时效性。

1.15 Zookeeper

是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。
Zookeeper是很多大数据框架的基础,它是集群的管理者。监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。
最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户

1.16 Hbase

Hbase是一个Nosql 数据库,是一个Key-Value类型的数据库,是高可靠、面向列的、可伸缩的、分布式的数据库。
适用于非结构化的数据存储,底层的数据存储在HDFS上。http://www.cndba.cn/cndba/dave/article/3225

1.17 Kafka

kafka是一个消息中间件,在工作中常用于实时处理的场景中,作为一个中间缓冲层。

1.18 Flume

Flume是一个分布的、可靠的、高可用的海量日志聚合的系统,可用于日志数据收集,日志数据处理,日志数据传输。常见的就是采集应用产生的日志文件中的数据,一般有两个流程。

http://www.cndba.cn/cndba/dave/article/3225

一个是Flume采集数据存储到Kafka中,方便Storm或者SparkStreaming进行实时处理。
另一个流程是Flume采集的数据存储到HDFS上,为了后期使用hadoop或者spark进行离线处理。

2 第二阶段:数据挖掘算法

学习完第二阶段的知识,可以从事数据挖掘相关的工作,这也是目前进入大数据行业含金量最高的工作。

http://www.cndba.cn/cndba/dave/article/3225
http://www.cndba.cn/cndba/dave/article/3225

2.1 中文分词

开源分词库的离线和在线应用

2.2 自然语言处理

文本相关性算法

2.3 推荐算法

基于CB、CF,归一法,Mahout应用。

2.4 分类算法

NB、SVM

2.5 回归算法

LR、Decision Tree

2.6 聚类算法

层次聚类、Kmeans

2.7 神经网络与深度学习

NN、Tensorflow

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2280
    原创
  • 3
    翻译
  • 579
    转载
  • 196
    评论
  • 访问:8163214次
  • 积分:4416
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ