Hadoop简介

Hadoop版本和优势

Hadoop的三大发行版本:

  1. Apache:是最原始最基础的版本,适合入门
  2. Cloudera: 大型互联网企业中使用较多
  3. Hortonworks:文档较好
  1. 2008年成立的Cloudera公司是最早将Hadoop商用的公司
  2. 2009年Hadoop的创始人Doug Cutting加盟Cloudrea公司
  3. Cloudera 的主要产品是 CDHCDHClouderaHadoop的发行版本,完全开源,比Apache Hadoop在兼容性和安全性,稳定性上有所增强

2011年成立的Hortonworks是雅虎与硅谷风投公司Benchmark Capital合资组建的。

公司成立之初就就吸纳了大约25至30名专门 研究Hadoop的雅虎工程师,上述工程师在2005年开始协助雅虎开发Hadoop,贡献了Hadoop的80%的代码。

  1. 高可靠性:多个副本
  2. 高扩展性:在集群之间分配任务及数据,方便扩展数以千计的节点
  3. 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度
  4. 高容错性:能够自动将失败的任务重新分配

Hadoop组成

Hadoop中MapReduce同事处理业务逻辑运算和资源调度,耦合性较大

image-20230814010619170

增加了YarnYarn只负责资源的调度,MapReduce只负责运算

image-20230814010709899
  1. java修改为支持8及以上
  2. HDFS支持纠删码
    1. 纠删码是一种比副本存储更加节省空间的一种数据持久化方案
  3. HDFS支持多NameNode
  4. Map Reduce 任务级本地化
  5. 多重服务默认端口变更
image-20230814010753444

Hadoop的主要三大核心组件:HDFS+MapReduce+Yarn

image-20230814011608866

分布式存储:负责海量数据存储

  • NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件块列表所在的DataNode等。

  • DataNode(dn):在本地文件系统存储文件块数据,以及数据的校验和。

  • Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

集群资源的管理和调度

  • ResourceManager(rm):处理客户端请求、启动/监控ApplicationMaster、监控NodeManger、资源分配与调度
  • NodeManger(nm):单个节点上的资源管理、处理来自ResouceManger的命令、处理来自ApplicationMaster的命令
  • ApplicationMaster:数据切分、为应用程序申请资源并分配给内部任务、任务监控与容错。
  • Container:对任务运行的环境的抽象,封装了CPU、内存等多位资源一级环境变量、启动命令等任务运行相关信息。
image-20220511002421246

分布式计算框架

MapReduce将计算过程分成两个阶段:Map和reduce

  • Map阶段并行处理输入的数据
  • Reduce阶段对Map结果进行汇总
image-20220511003746701

大数据的生态系统

image-20220511005301676

image-20230123205038315

Hadoop安装

  • 官网https://hadoop.appache.org
  • 历史归档:https://archive.apache.org/dist/hadoop/common/
  • 推荐使用国内镜像:https://mirrors.tuna.tsinghua.edu.cn/apache
  • 本次使用:https://archive.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz
image-20230814012407148

bash

# 修改主机名为bigdata01
[root@localhost ~]# vim /etc/hostnam
# 重启服务器
[root@localhost ~]# reboot

# 关闭防火墙
[root@localhost ~]# systemctl stop firewalld

# 生成sshkey
[root@localhost ~]# ssh-keygen -t rsa

# 在~/.ssh/下生成authorized_keys文件

[root@bigdata01 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

bash

[root@bigdata01 hadoop-3.2.0]# ll
total 184
drwxr-xr-x. 2 1001 1002    203 Jan  8  2019 bin
drwxr-xr-x. 3 1001 1002     20 Jan  8  2019 etc
drwxr-xr-x. 2 1001 1002    106 Jan  8  2019 include
drwxr-xr-x. 3 1001 1002     20 Jan  8  2019 lib
drwxr-xr-x. 4 1001 1002   4096 Jan  8  2019 libexec
-rw-rw-r--. 1 1001 1002 150569 Oct 18  2018 LICENSE.txt
-rw-rw-r--. 1 1001 1002  22125 Oct 18  2018 NOTICE.txt
-rw-rw-r--. 1 1001 1002   1361 Oct 18  2018 README.txt
drwxr-xr-x. 3 1001 1002   4096 Jan  8  2019 sbin
drwxr-xr-x. 4 1001 1002     31 Jan  8  2019 share
  • bin:
  • etc:配置
  • sbin:启动脚本

为了后面使用方便将hadoop的binsbin目录添加只环境变量中

bash

[root@bigdata01 hadoop-3.2.0]# vim /etc/profile

# java 相关
export JAVA_HOME=/opt/jdk1.8.0_351
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin

# hadoop 相关
export HADOOP_HOME=/root/soft/hadoop-3.2.0
export HADOOP_PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin


export PATH=$PATH:${JAVA_PATH}:${HADOOP_PATH}
  1. 修改hadoop-env.sh