hadoop02--Apache Hadoop集群搭建与介绍

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: hadoop02--Apache Hadoop集群搭建与介绍

本文重点

了解Hadoop发展历史、生态圈
掌握Hadoop集群架构、角色
掌握Hadoop集群分布式安装部署
掌握Job HistoryServer功能
理解HDFS垃圾桶机制

内容大纲

#Apache Hadoop入门
  介绍概念  
    狭义上hadoop指什么  指软件
        广义上hadoop指什么  指生态圈
  hadoop起源
  hadoop特性优点
#Apache Hadoop搭建
  hadoop集群:主从架构
    分为两个集群,两个集群物理上在一起,逻辑上分离
      hdfs集群 
      yarn集群
  集群角色 集群规划
    集群配置
    format初始化
    启停脚本
    webUI页面
  hadoop初体验   现象与疑惑 后续学习方向
#Apache hadoop辅助功能
  jobhistory服务 查看历史执行记录
  文件系统垃圾桶机制 回收站

一、Apache Hadoop入门

1.1、Hadoop介绍
  • 狭义上:hadoop指的是Apache一款java开源软件,是一个大数据分析处理平台。

Hadoop HDFS:分布式文件系统。 解决了海量数据存储问题。

Hadoop Distributed File System (HDFS™)

Hadoop MapReduce:分布式计算框架。解决海量数据计算问题。

parallel processing of large data sets.

Hadoop YARN:集群资源管理和任务调度

A framework for job scheduling and cluster resource management.
#资源指的是和程序运行相关的硬件资源
cpu ram内存
#任务调度
集群资源繁忙的时候 如何分配资源给各个程序  调度
调度的关键是策略:先来后到  权重
1.2、Hadoop起源发展
  • Hadoop之父–Doug Cutting
  • 起源项目Apache Nutch。 致力于构建一个全网搜索引擎
1、爬取互联网网页 --->存储在哪里? 海量数据存储问题
2、基于网页创建倒排索引。--->如何计算?  海量数据计算问题

Google也在做搜索,也遇到这些问题,内部解决了。

  • google不想开源软件,但是又憋的难受,怕被人不知道,写论文发表。
  • 前后写了3篇论文(谷歌是使用c实现的)。
谷歌分布式文件系统(GFS)------>HDFS
谷歌版MapReduce 系统------>Hadoop MapReduce
bigtable---->HBase

基于论文的影响 Nutch团队实现了相应的java版本开源组件。


Nutch团队把HDFS和MapReduce抽取独立成为单独软件在2008年贡献给了Apache。开源。


Doug Cutting 看到他儿子在牙牙学语时,抱着黄色小象,亲昵的叫hadoop,他灵光一闪,就把这技术命名为 Hadoop,而且还用了黄色小象作为标示 Logo。

1.3、Hadoop特性优点
  • 分布式、扩容能力
不再注重单机能力 看中的是集群的整体能力。
动态扩容、缩容。

成本低

在集群下 单机成本很低 可以是普通服务器组成集群
意味着大数据处理不一定需要超级计算机。
  • 高效率 并发能力
  • 可靠性
  • 通用性
#技术是相同的 业务不相同的
#hadoop精准区分技术和业务。
做什么?(what need to do)---->业务问题(20%)
怎么做?(how to do)----->技术问题(80%)
Hadoop把技术实现了 用户负责业务问题。

二、Apache Hadoop集群搭建

2.1、发行版本
  • 官方社区版本Apache基金会官方
  • 版本新 功能最全的
  • 不稳定 兼容性需要测试 bug多

商业版本 商业公司在官方版本之上进行商业化发行。著名:Cloudera、hotonWorks、MapR

  • 稳的一批 兼容性极好 技术支持 本地化支持 一键在线安装
  • 版本不一定是最新的 辅助工具软件需要收费
Cloudera发行的hadoop生态圈软件叫做CDH版本。
Cloudera’s Distribution Including Apache Hadoop。
https://www.cloudera.com/products/open-source/apache-hadoop/key-cdh-components.html
Hortonworks Data Platform (HDP)

Hadoop本身版本变化

  • hadoop 1.x
只有hdfs mapreduce. 架构过于垃圾 性能不高 当下企业中没人使用了。

hadoop 2.x

hdfs  MapReduce  yarn.

hadoop 3.x

架构和2一样 性能做了优化
2.2、Hadoop集群
  • 通常是有hdfs集群yarn集群组成。两个集群都是标准的主从架构集群。
  • 两个集群逻辑上分离 物理上在一起。
  • HDFS集群:解决了海量数据存储 分布式存储系统
  • 主角色:namenode(NN)
  • 从角色:datanode(DN)
  • 主角色辅助角色"秘书角色":secondarynamenode (SNN)
  • YARN集群:集群资源管理 任务调度
  • 主角色:resourcemanager(RM)
  • 从角色:nodemanager(NM)
2.3、Hadoop部署模式、集群规划

单机模式 Standalone

一台机器,所有的角色在一个java进程中运行。 适合体验。

伪分布式

一台机器 每个角色单独的java进程。 适合测试

分布式 cluster

多台机器  每个角色运行在不同的机器上  生产测试都可以

高可用(持续可用)集群 HA

在分布式的模式下 给主角色设置备份角色  实现了容错的功能 解决了单点故障
保证集群持续可用性。

Hadoop集群的规划

  • 根据软件和硬件的特性 合理的安排各个角色在不同的机器上。
  • 有冲突的尽量不部署在一起
  • 有工作依赖尽量部署在一起
  • nodemanager 和datanode是基友
node1: namenode  datanode                    | resourcemanager  nodemanger
node2:       datanode   secondarynamenode|              nodemanger
node3:       datanode                    |              nodemanger

Q:如果后续需要扩容hadoop集群,应该增加哪些角色呢?

node4:  datanode  nodemanger
node5:  datanode  nodemanger
node6:  datanode  nodemanger
.....
2.4、Hadoop源码编译

https://archive.apache.org/dist/

Apache软件基金会的所有软件所有版本的下载地址.

  • 源码下载地址
https://archive.apache.org/dist/hadoop/common/
hadoop-3.3.0-src.tar.gz    source 源码包
hadoop-3.3.0.tar.gz        官方编译后安装包

源码下载地址

https://archive.apache.org/dist/hadoop/common/
hadoop-3.3.0-src.tar.gz    source 源码包
hadoop-3.3.0.tar.gz        官方编译后安装包

对应java语言开发的项目软件来说,所谓的编译是什么?

xxx.java(源码)---->xxx.class(字节码)---->jar包

正常来说,官方网站提供了安装包,可以直接使用,为什么要自己编译呢?

  • 修改源码之后需要重新编译。
  • 官方提供的最大化编译 满足在各个平台运行,但是不一定彻底兼容本地环境
  • 某些软件,官方只提供源码。
native library 本地库。
官方编译好的 adoop的安装包没有提供带 C程序访问的接口。主要是本地压缩支持、IO支持。

怎么编译?

在源码的根目录下有编译相关的文件BUILDING.txt 指导如何编译。
使用maven进行编译 联网jar.

三、Hadoop具体安装部署

详细安装步骤在这: hadoop编译安装和文件配置

3.1、服务器基础环境准备
ip、主机名
hosts映射 别忘了windows也配置
防火墙关闭
时间同步
免密登录  node1---->node1 node2 node3
JDK安装
3.2、安装包目录结构
#上传安装包到/export/server 解压
 bin    #hadoop核心脚本 最基础最底层脚本
 etc    #配置目录
 include
 lib
 libexec
 LICENSE.txt
 NOTICE.txt
 README.txt
 sbin  #服务启动 关闭 维护相关的脚本
 share #官方自带实例  hadoop相关依赖jar
3.3、配置文件的修改

官网文档:https://hadoop.apache.org/docs/r3.3.0/

  • 第一类 1个 hadoop-env.sh
  • 第二类 4个core|hdfs|mapred|yarn-site.xml
  • site表示的是用户定义的配置,会覆盖default中的默认配置。
  • core-site.xml 核心模块配置
  • hdfs-site.xml hdfs文件系统模块配置
  • mapred-site.xml MapReduce模块配置
  • yarn-site.xml yarn模块配置
  • 第三类 1个 workers
3.4、scp安装包到其他机器
3.5、Hadoop环境变量配置
3.6、hadoop namenode format
  • format准确来说翻译成为初始化比较好。对namenode工作目录、初始文件进行生成。
  • 通常在namenode所在的机器执行 执行一次。首次启动之前
#在node1 部署namenode的这台机器上执行
hadoop namenode -format
#执行成功 日志会有如下显示
2023-01-31 14:09:22,869 INFO common.Storage: Storage directory 
/export/data/hadoop-3.3.0/dfs/name has been successfully formatted.
[root@node1 ~]# cd /export/data/hadoop-3.3.0/dfs/name/current
[root@node1 current]# ll
total 16
-rw-r--r-- 1 root root 399 Jan 31 14:09 fsimage_0000000000000000000
-rw-r--r-- 1 root root  62 Jan 31 14:09 fsimage_0000000000000000000.md5
-rw-r--r-- 1 root root   2 Jan 31 14:09 seen_txid
-rw-r--r-- 1 root root 218 Jan 31 14:09 VERSION

Q:如果不小心初始化了多次?

  • 现象:主从之间互相不识别。
  • 解决
#企业真实环境中    枪毙
#学习环境
删除每台机器上hadoop.tmp.dir配置指定的文件夹/export/data/hadoop-3.3.0。 
重新format。

四、Hadoop集群启动

4.1、单节点单进程逐个手动启动
  • HDFS集群
#hadoop2.x版本命令
hadoop-daemon.sh start|stop  namenode|datanode|secondarynamenode
#hadoop3.x版本命令
hdfs --daemon start|stop namenode|datanode|secondarynamenode

YARN集群

#hadoop2.x版本命令
yarn-daemon.sh start|stop resourcemanager|nodemanager
#hadoop3.x版本命令
yarn --daemon start|stop resourcemanager|nodemanager
  • 优点:精准的控制每个角色每个进程的启停。避免了群起群停(时间成本)。
4.2、脚本一键启动
  • 前提:配置好免密登录。ssh
ssh-copy-id node1.itcast.cn
ssh-copy-id node2.itcast.cn
ssh-copy-id node3.itcast.cn

HDFS集群

start-dfs.sh 
stop-dfs.sh

YARN集群

start-yarn.sh
stop-yarn.sh

更直接的

start-all.sh
stop-all.sh
[root@node1 ~]# start-all.sh 
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
4.3、集群进程确认和错误排查
  • 确认是否成功
[root@node1 ~]# jps
8000 DataNode
8371 NodeManager
8692 Jps
8264 ResourceManager
7865 NameNode

如果进程不在 看启动运行日志!!!!!!

#默认情况下 日志目录
cd /export/server/hadoop-3.3.0/logs/
#注意找到对应进程名字 以log结尾的文件

五、Hadoop初体验

  • Hadoop Web UI页面
  • HDFS集群 http://node1:9870
  • YARN集群 http://node2:8088
5.1、初体验之HDFS

本质就是存储文件的 和标准文件系统一样吗?

  • 也是有目录树结构,也是从根目录开始的。
  • 文件是文件、文件夹是文件夹(对于zk来说)
  • 和linux很相似
  • 上传小文件好慢。为什么慢?和分布式有没有关系?
5.2、体验之MapReduce+yarn
  • MapReduce是分布式程序 yarn是资源管理 给程序提供运算资源。 Connecting to ResourceManager
[root@node1 mapreduce]# pwd
/export/server/hadoop-3.3.0/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi  2 2
  • MR程序运行首先连接YRAN ResourceManager,连接它干什么的?要资源
  • MR程序好像是两个阶段 ,先Map 再Reduce
  • 数据量这么小的情况下,为什么MR这么慢? MR适合处理大数据场景还是小数据场景?

六、Hadoop辅助功能

6.1、MapReduce jobhistory服务
  • 背景
默认情况下,yarn上关于MapReduce程序执行历史信息、执行记录不会永久存储;
一旦yarn集群重启 之前的信息就会消失。

功能

保存yarn上已经完成的MapReduce的执行信息。

配置

  • 因为需求修改配置。重启hadoop集群才能生效。
vim mapred-site.xml
<property>
  <name>mapreduce.jobhistory.address</name>
  <value>node1:10020</value>
</property>
<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>node1:19888</value>
</property>

scp同步给其他机器

scp /export/server/hadoop-3.3.0/etc/hadoop/mapred-site.xml node2:/export/server/hadoop-3.3.0/etc/hadoop/
scp /export/server/hadoop-3.3.0/etc/hadoop/mapred-site.xml node3:/export/server/hadoop-3.3.0/etc/hadoop/
  • 重启hadoop集群
  • 自己手动启停jobhistory服务。
#hadoop2.x版本命令
mr-jobhistory-daemon.sh start|stop historyserver
#hadoop3.x版本命令
mapred --daemon start|stop historyserver
[root@node1 ~]# jps
13794 JobHistoryServer
13060 DataNode
12922 NameNode
13436 NodeManager
13836 Jps
13327 ResourceManager
6.2、HDFS 垃圾桶机制
  • 背景 在windows叫做回收站
在默认情况下 hdfs没有垃圾桶 意味着删除操作直接物理删除文件。
[root@node1 ~]# hadoop fs -rm /itcast/1.txt
Deleted /itcast/1.txt
  • 功能:和回收站一种 在删除数据的时候 先去垃圾桶 如果后悔可以复原。
  • 配置
在core-site.xml中开启垃圾桶机制
指定保存在垃圾桶的时间。单位分钟
<property>
  <name>fs.trash.interval</name>
  <value>1440</value>
</property>

集群同步配置 重启hadoop服务。

[root@node1 hadoop]# pwd
/export/server/hadoop-3.3.0/etc/hadoop
[root@node1 hadoop]# scp core-site.xml node2:$PWD
core-site.xml                                              100% 1027   898.7KB/s   00:00    
[root@node1 hadoop]# scp core-site.xml node3:$PWD
core-site.xml 

垃圾桶使用

  • 配置好之后 再删除文件 直接进入垃圾桶
[root@node1 ~]# hadoop fs -rm /itcast.txt
INFO fs.TrashPolicyDefault: Moved: 'hdfs://node1:8020/itcast.txt' to trash at: hdfs://node1:8020/user/root/.Trash/Current/itcast.txt

垃圾桶的本质就是hdfs上的一个隐藏目录。

hdfs://node1:8020/user/用户名/.Trash/Current

后悔了 需要恢复怎么做?

hadoop fs -cp /user/root/.Trash/Current/itcast.txt /

就想直接删除文件怎么做?

hadoop fs -rm -skipTrash /itcast.txt
  [root@node1 ~]#  hadoop fs -rm -skipTrash /itcast.txt
  Deleted /itcast.txt


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
1月前
|
消息中间件 存储 监控
构建高可用性Apache Kafka集群:从理论到实践
【10月更文挑战第24天】随着大数据时代的到来,数据传输与处理的需求日益增长。Apache Kafka作为一个高性能的消息队列服务,因其出色的吞吐量、可扩展性和容错能力而受到广泛欢迎。然而,在构建大规模生产环境下的Kafka集群时,保证其高可用性是至关重要的。本文将从个人实践经验出发,详细介绍如何构建一个高可用性的Kafka集群,包括集群规划、节点配置以及故障恢复机制等方面。
78 4
|
2月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
177 6
|
2月前
|
存储 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
43 1
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
|
2月前
|
分布式计算 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
47 5
|
2月前
|
资源调度 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
46 2
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
76 4
|
2月前
|
消息中间件 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
42 2
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
34 3
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
59 3
|
2月前
|
存储 消息中间件 druid
大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
88 1