目录

  • 1 第1章 初识Hadoop
    • 1.1 大数据概述
    • 1.2 大数据应用场景
    • 1.3 Hadoop概述
    • 1.4 章节测试
  • 2 第2章  搭建Hadoop集群
    • 2.1 安装准备
    • 2.2 Hadoop集群搭建
      • 2.2.1 Hadoop单机模式安装
      • 2.2.2 伪分布式模式部署
      • 2.2.3 完全分布式模式
    • 2.3 Hadoop集群测试
    • 2.4 章节测试
  • 3 第3章 HDFS分布式文件系统
    • 3.1 HDFS的简介
    • 3.2 HDFS构架和原理
    • 3.3 HDFS的Shell操作
    • 3.4 HDFS的Java API操作
    • 3.5 章节测试
  • 4 第4章 MapReduce分成式框架
    • 4.1 MapReduce概述
    • 4.2 MapReduce工作原理
    • 4.3 Mapreduce编程组件
    • 4.4 Mapreduce运行模式
    • 4.5 MapReduce性能优化策略
    • 4.6 经典案例
    • 4.7 章节测试
  • 5 第5章 Zookeeper分布式协调服务
    • 5.1 Zookeeper的简介
    • 5.2 Zookeeper的特性
    • 5.3 Zookeeper集群角色
    • 5.4 Zookeeper的数据模型
    • 5.5 Zookeeper的Watch机制
    • 5.6 Zookeeper的选举机制
    • 5.7 Zookeeper分布式集群部署
    • 5.8 Zookeeper的Shell操作
    • 5.9 Zookeeper的Java API操作
    • 5.10 Zookeeper典型应用场景
    • 5.11 章节测试
  • 6 第6章 Hadoop2.0新特性
    • 6.1 Hadoop2.0改进与提升
    • 6.2 Yarn体系结构
    • 6.3 Yarn工作流程
    • 6.4 HDFS HA的搭建方式
    • 6.5 HDFS的高可用架构
    • 6.6 章节测试
  • 7 Hive仓库
    • 7.1 数据仓库简介
      • 7.1.1 什么是数据仓库
      • 7.1.2 数据仓库的结构
      • 7.1.3 数据仓库数据模型
    • 7.2 Hive简介
      • 7.2.1 什么是Hive
      • 7.2.2 Hive系统架构
      • 7.2.3 Hive工作原理
      • 7.2.4 Hive数据模型
    • 7.3 Hive安装
    • 7.4 Hive的管理方式
    • 7.5 Hive内置数据类型
    • 7.6 Hive数据模型操作
    • 7.7 Hive数据操作
    • 7.8 Hive章节测试
  • 8 Flume日志采集系统
    • 8.1 Flume简介
    • 8.2 Flume运行机制
    • 8.3 Flume日志采集系统架构
    • 8.4 Flume系统要求
    • 8.5 Flume安装配置
    • 8.6 Flume入门使用
    • 8.7 Flume Sources
    • 8.8 Flume Channels
    • 8.9 Flume Sinks
    • 8.10 Flume负载均衡
    • 8.11 Flume故障转移
    • 8.12 Flume拦截器
    • 8.13 案例-日志采集
    • 8.14 Flume章节测验
  • 9 工作流管理器
    • 9.1 Azkaban工作管理流
      • 9.1.1 工作流管理器概述
      • 9.1.2 Azkaban概述
      • 9.1.3 Azkaban部署
        • 9.1.3.1 Azkaban资源准备
        • 9.1.3.2 Azkaban安装配置
        • 9.1.3.3 Azkaban启动测试
      • 9.1.4 Azkaban使用
        • 9.1.4.1 Azkaban工作流相关概念
        • 9.1.4.2 案例-依赖任务调度管理
        • 9.1.4.3 案例-MapReduce任务调度管理
        • 9.1.4.4 案例-Hive脚本任务调度管理
      • 9.1.5 Azkaban章节测试
  • 10 Sqoop数据迁移
    • 10.1 Sqoop概述
    • 10.2 Sqoop安装配置
    • 10.3 Sqoop指令介绍
    • 10.4 Sqoop数据导入
    • 10.5 Sqoop数据导出
    • 10.6 sqoop章节测试
  • 11 综合项目--网站流量日志数据分析系统
    • 11.1 系统概述
    • 11.2 模块开发-数据采集
    • 11.3 模块开发-数据预处理
    • 11.4 模块开发-数据仓库开发
    • 11.5 模块开发-数据分析
    • 11.6 模块开发-数据导出
    • 11.7 模块开发-日志分析系统报表展示
Hadoop概述
  • 1 知识要点
  • 2 知识测试
  • 3 主题讨论

1.3 hadoop概述

1.3.1 hadoop的前世今生

随着数据的快速增长,数据的存储和分析都变得越来越困难。例如存储容量、读写速度、计算效率等都无法满足用户的需求。为了解决这些问题,Google提出了如下3种处理大数据的技术手段。

  • ·MapReduce:Google的MapReduce开源分布式并行计算框架;

  • ·Big Table:一个大型的分布式数据库;

  • ·GFS:Google的分布式文件系统。

上述三大技术可以说是革命性的技术,具体表现在:

(1)成本降低,能用PC机,就不用大型机和高端存储。

(2)软件容错硬件故障视为常态,通过软件保证可靠性。

(3)简化并行分布式计算,无须控制节点同步和数据交换。

在2003一2004年,Google陆续公布了部分GFS和Map Reduce思想的细节,Nutch的创始人Doug Cutting受到启发,用了若干年时间实现了DFS和Map Reduce机制,使Nutch性能飙升。

2005年,Hadoop作为Lucene子项目Nutch的一部分正式被引人Apache基金会,随后又从Nutch中剥离,成为一套完整独立的软件,起名为Hadoop。据说,Hadoop这个名字来源于创始人Doug Cutting儿子的毛绒玩具大象,

目前,Hadoop已经正式成为Apache顶级开源项目,俨然已经处于大数据处理技术的核心地位。下面回顾一下近10年来Hadoop的主要发展历程。

  • 2008年1月,Hadoop成为Apache顶级项目。

  • 2008年6月,Hadoop的第一个SQL框架——Hive成为Hadoop的子项目。

  • 2009年7月,Map Reduce和Hadoop Distributed FileSystem(HDFS) 成为Hadoop项目的独立子项目。

  • 2009年7月,Avro和Chuk wa成为Hadoop新的子项目。

  • 2010年5月,Avro脱离Hadoop项目,成为Apache顶级项目。

  • 2010年5月,H Base脱离Hadoop项目,成为Apache顶级项目。

  • 2010年9月,Hive脱离Hadoop,成为Apache顶级项目。

  • 2010年9月,Pig脱离Hadoop,成为Apache顶级项目。

  • 2010一2011年,扩大的Hadoop社区忙于建立大量的新组件(Crunch,Sqoop,Flume,Oozie等) 来扩展Hadoop的使用场景和可用性。

  • 2011年1月,ZooKeeper脱离Hadoop,成为Apache顶级项目。

  • 2011年12月,Hadoop1.0.0版本发布,标志着Hadoop已经初具生产规模。

  • 2012年5月,Hadoop2.0.0-alpha版本发布,这是Hadoop-2.x系列中第一个(alpha) 版本。与之前的Hadoop-1.x系列相比,Hadoop-2.x版本中加入了YARN,YARN成为了Hadoop的子项目。

  • 2012年10月,Impala加入Hadoop生态圈。

  • 2013年10月,Hadoop2.0.0版本发布,标志着Hadoop正式进人MapReduce v 2.0时代。

  • 2014年2月,Spark开始代替Map Reduce成为Hadoop的默认执行引擎,并成为Apache顶级项目。

  • 2017年12月,继Hadoop3.0.0的4个Alpha版本和1个Beta版本后,第一个可用的Hadoop3.0.0版本发布。


1.3.2 hadoop的优势

  • 扩容能力强。Hadoop是一个高度可扩展的存储平台, 它可以存储和分发跨越数百个并行操作的廉价的服务器数据集群。不同于传统的关系数据库不能扩展到处理大量的数据,Hadoop是能给企业提供涉及成百上千TB的数据节点上运行的应用程序。

  • 成本低。Hadoop为企业用户提供了极具缩减成本的存储解决方案。通过普通廉价的机器组成服务器集群来分发处理数据,成本比较低,普通用户也很容易在自己的PC机上搭建Hadoop运行环境。

  • 高效率。Hadoop能够并发处理数据, 并且能够在节点之间动态地移动数据, 并保证各个节点的动态平衡,因此处理数据的速度是非常快的。

  • 可靠性。Hadoop自动维护多份数据副本, 假设计算任务失败, Hadoop能够针对失败的节点重新分布处理。

  • 高容错性。Hadoop的一个关键优势就是容错能力强, 当数据被发送到一个单独的节点,该数据也被复制到集群的其他节点上,这意味着故障发生时,存在另一个副本可供使用。


1.3.2 hadoop的生态体系



1.3.4 hadoop的版本


  • Hadoop发行版分为开源社区版和商业版

  • Hadoop自诞生以来,主要分为Hadoop1、Hadoop2、Hadoop3三个系列的多个版本,目前市场上最主流的是Hadoop2.x版本。

  • Hadoop2.x版本指的是第2代Hadoop,它是从Hadoop1.x发展而来的,并且相对于Hadoop1.x来说,有很多改进。