1 Hadoop是什么
- 是一个由Apache基金会所开发的分布式系统基础框架
- 主要解决,海量数据的存储和海量数据的分析计算问题
- 广义上来说,Hadoop通常指一个更广泛的概念-Hadoop生态圈
2 优势
- 高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据缺失
- 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点
- 高效性:在Mapreduce的思想下,Hadoop是并行工作的,以加快任务处理速度
- 高容错性:能够自动将失败的任务重新分配
3 Hadoop1.x,2.x,3.x区别

4 Hadoop组成
4.1 HDFS 架构概述
- Hadoop Distributed File System 简称HDFS,是一个分布式的文件系统
- 组成
-
- NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode
-
- DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和
-
- Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份

4.2 Yarn架构概述
- Yet Another Resource Negotiator简称YARN,另一种资源协调者,是Hadoop的资源管理器
- 组成
-
- Resource Manage(RM):整个集群资源(内存、CPU等)的老大
-
- NodeManage(NM):单个节点服务器资源老大
-
- ApplicationMaster(AM):单个任务的老大
-
- Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、cpu、磁盘、网络
-
- 当有客户端申请任务ApplicationMaster时,Resource Manage会从其中一个服务器节点中分出部分资源形成一个Container,供ApplicationMaster使用
- 说明
-
-
-
- 每个NodeManage上可以有多个Container

4.3 MapReduce架构概述
MapReduce将计算过程分为两个阶段:Map和Reduce
- Map阶段并行处理输入数据
- Reduce阶段对Map结果进行汇总
将任务分给所有的服务器(Map),然后所有的服务器将找到的结果整合(Reduce) 
4.4 HDFS、YARN、MapReduce三者关系
- 首先客户端来了一个任务,要找到某一个文件,提交一个任务ApplicationMaster
- Yarn中的ResourceManage收到任务后,会从一台服务中分出一个Container,让任务在这执行
- ApplicationMaster会向ResourceManage申请我需要哪些资源,然后在对应的服务器上开启MapReduce中的Map阶段,分发给服务器都去查询
- 然后Reduce阶段会把所有的Map结果汇总,更新HDFS中的DataNode和NameNode以及Secondary NameNode

5 大数据技术生态体系

6 hadoop运行模式
7 同步工具
7.1 scp(secure copy)安全拷贝
用于在服务器之间传输数据
scp -r 数据源的用户名@主机名:文件路径 目的地的用户名@主机名:文件路径
7.2 rsync远程同步工具
- 主要用于备份和镜像,具有速度快、避免复制相同内容和支持符号链接的优点
- rsync和scp的区别:用rsync要比scp的速度快,rsync只对差异文件做更新,scp是把所有文件都复制过去
- 基本语法
rsync -av 数据源的用户名@主机名:文件路径 目的地的用户名@主机名:文件路径
-a 归档拷贝
-v 显示复制过程
7.3 xsync集群分发脚本
需求:循环复制文件到所有节点的相同目录下
#!/bin/bash
if [ $# -lt 1 ]
then
echo Not Enough Argument!
exit;
fi
for host in hadoop178 hadoop179 hadoop180
do
echo =============== $host ===============
for file in $@
do
if [ -e $file ]
then
pdir=$(cd -P $(dirname $file);pwd)
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does nor exits!
fi
done
done
7.4 ssh免密登陆
- 原理
 - 操作步骤
cd /home/tws
ll -al
cd .ssh/
ssh-keygen -t rsa
-rw-------. 1 tws tws 1675 10月 15 10:42 id_rsa
-rw-r--r--. 1 tws tws 395 10月 15 10:42 id_rsa.pub
-rw-r--r--. 1 tws tws 558 10月 15 09:19 known_hosts
ssh-copy-id hadoop179
ssh hadoop179
文件名 | 作用 |
---|
known_hosts | 记录ssh访问过计算机的公钥(public key) | id_rsa | 生成的私钥 | id_rsa.pub | 生成的公钥 | authorized_keys | 存放授权过的无密登录服务器公钥 |
8 集群配置
8.1 集群部署规划
- 注意事项
-
- NameNode和SecondaryNameNode不要安装在同一台服务器上
-
- ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上
| Hadoop178 | Hadoop179 | Hadoop180 |
---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode | Yarn | NodeManager | ResourceManager NodeManager | NodeManager |
8.2 Hadoop配置文件说明
- Hadoop配置文件分为两类:默认配置文件和自定义配置文件,
- 只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值
(1) 默认配置文件
要获取的默认文件 | 文件存放在Hadoop的jar包中的位置 |
---|
[core-default.xml] | hadoop-common-3.13.jar/core-default.xml | [hdfs-default.xml] | hadoop-hdfs-3.13.jar/hdfs-default.xml | [yarn-default.xml] | hadoop-yarn-common-3.13.jar/yarn-default.xml | [mapred-default.xml] | hadoop-mapreduce-cilent-core-3.13.jar/mapred-default.xml |
(2) 自定义配置文件
core-site.xml、hdfs-site.xml,yarn-site.xml,mapred-site.xml四个配置文件存放在$HADOOP_HMOE/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置
8.3 配置集群
(1) 核心配置文件
cd $HADOOP_HOME/etc/hadoop
vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop178:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>atguigu</value>
</property>
</configuration>
(2) HDFS配置文件
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop178:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop180:9868</value>
</property>
</configuration>
(3) YARN配置文件
vim hdfs-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop179</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
(4) MapReduce配置文件
vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(5)在集群上分发配置好的Hadoop配置文件
sync /opt/module/hadoop-3.1.3/etc/hadoop/
8.5 群起集群
(1) 配置workers
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
hadoop178
hadoop179
hadoop180
xsync /opt/module/hadoop-3.1.3/etc
(2) 启动集群
- 如果集群是第一次启动
需要在hadoop178节点格式化NameNode(注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)
[tws@hadoop178 hadoop-3.1.3]$ hdfs namenode -format
[tws@hadoop178 hadoop-3.1.3]$ sbin/start-dfs.sh
- 在配置了ResourceManager的节点(hadoop179)启动YARN
[tws@hadoop179 hadoop-3.1.3]$ sbin/start-yarn.sh
- Web端查看HDFS的NameNode
a)浏览器中输入:http://hadoop178:9870 b)查看HDFS上存储的数据信息 - Web端查看YARN的ResourceManager
a)浏览器中输入:http://hadoop179:8088 b)查看YARN上运行的Job信息
|