学校之前学习过Hadoop,只是记得当时老师搭建Hadoop环境就用了很久的时间,不过实话说,集群搭建的话真的很耗时间。而且搭建这个集群是比较重要的一步操作,因为数仓的底层用的就是Hadoop。

后面会有具体搭建Hadoop集群的步骤,这里就不再啰嗦了。

Apache Hadoop是什么!

  • hadoop 广义上来说 hadoop整个生态,狭义来说,大数据软件

  • hadoop 软件分为三个组件(见名知意)

    1. HDFS(Hadoop Distributed File System): 分布式存储系统
    2. MapReduce: 分布式计算引擎
    3. Yarn: 分布式资源调度平台
  • 什么是分布式:

    • 打个比方,做一道菜需要有切菜(多个人),洗菜(多个人),买菜(多个人),这个过程中切,洗,买就构成了分布式。而在切菜中多个人就算一个集群,集群中的人做相同的事情。

大数据的三驾马车

2003, 谷歌发表GFS, 道格·卡丁(Doug Cutting)开源, 叫: HDFS(Hadoop Distributed File System)
2004, 谷歌发表MapReduce, 道格·卡丁(Doug Cutting)开源, 叫: MapReduce
2006, 谷歌发表BigTable, 道格·卡丁(Doug Cutting)开源, 叫: HBase

Hadoop版本简介

  • 社区版: 指的是Apache Hadoop, 免费的, 稳定性稍差, 但是更新速度快.
  • 商业版: 指的是 CDH, 星环(国内)等, 收费的, 稳定性较好, 但是更新周期相对较慢.

Hadoop的三大发行版本, 各有什么优缺点

  • 免费开源版本Apache Hadoop

优点:代码更新块,拥有全世界的开源贡献者

缺点:版本维护难,兼容性较差

  • 免费开源版本HortonWorks

完全开源,包含稳定版本的hadoop的所有组件,安装方便

  • 免费开源版本Cloudera

完全开源,安全性和稳定性比apache更强

hadoop1.x 架构和hadoop2.x 架构

hadoop2.x 相比hadoop1.x 版本对比,Hadoop 2.x增加了一个新的角色Yarn

Hadoop组件中的各个角色

HDFS(Hadoop Distributed File System)

1
2
3
namenode角色:   大哥, 主节点
SecondaryNameNode角色: 秘书, 辅助节点(主节点宕机后由sn帮助恢复)
datanode角色: 小弟, 从节点
  • Namenode

    • 1, 管理整个hdfs集群
    • 2, 管理元数据
  • secondaryNameNode

    • 辅助namenode管理元数据
  • Datanode

    • 1, 存储真实数据
    • 2, 负责数据的读写操作

MapReduce

代码级别的, 没有角色划分, 直接通过Python或者Java操作它即可

  • MapReduce的核心思想: 分而治之的思想
    • 将一个大的问题,拆分成许多小的问题,将每个小的问题,进行分别计算处理操作,得到局部结果后,在进行合并为最终的结果即可.

Yarn

  • ResourceManager(yarn集群主节点)

    • 1, 负责(CPU和内存)资源分配
    • 2, 负责任务接收
  • APPmaster

    • 负责任务分配以及向resourcemanager申请资源,运行在NameNode上
  • Nodemanager

    • 负责执行APPmaster分配过来的任务

Hadoop各个组件端口号

HDFS的WebUI界面

node1:9870 # 如果hosts文件没有配域名映射, 记得写IP 192.168.88.161

Yarn的WebUI界面

node1:8088 # 如果hosts文件没有配域名映射, 记得写IP 192.168.88.161

历史服务的WebUI界面

node1:19888 # 如果hosts文件没有配域名映射, 记得写IP 192.168.88.161

Hadoop简单案例

  1. 通过Linux的可视化工具(例如: Tabby, CRT等)连接这3台虚拟机.

    这3台虚拟机在:链接https://www.aliyundrive.com/drive/folder/645cefcbb18cd4cb3f7a48e59d7dfdea14f992ed

  2. 去windows的 C:\windows\system32\drivers\etc\hosts 文件中, 配置域名映射

    1
    2
    3
    192.168.88.161 node1 node1.itcast.cn
    192.168.88.162 node2 node2.itcast.cn
    192.168.88.163 node3 node3.itcast.cn
  3. 开启Hadoop集群.

    1
    2
    3
    # 如下的命令是在 node1机器做的.
    start-all.sh # 启动Hadoop集群, 如果要关闭 用 stop-all.sh
    mr-jobhistory-daemon.sh start historyserver # 启动历史服务,19888端口可用
  4. 如何查看启动是否成功.

    jps命令, 三台都执行.

1
2
3
4
5
6
7
# 第一步,cd到hadoop/mapreduce这个目录下

# 计算圆周率
hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi 5 10

# 词频统计(后面的路径必须不存在,要不就会报错)
hadoop jar hadoop-mapreduce-examples-3.3.0.jar wordcount /wordcount/input/word.txt /wordcount/output