Hadoop简介与集群配置

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使用
  • 说明
    • 客户端可以有多个
    • 集群上可以运行多个Application
    • 每个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运行模式

  • 本地模式
    • 数据存储在linux本地
    • 使用场景:测试环境中用
  • 伪分布式模式
    • 数据存储在HDFS
    • 使用场景:公司中比较差钱
  • 完全分布式模式
    • 完全分布式集群
    • 数据存储在HDFS/多台服务器工作
    • 使用场景:企业里面大量使用

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

#1.判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Argument!
    exit;
fi

#2.遍历集群所有机器
for host in hadoop178 hadoop179 hadoop180
do 
  echo ===============  $host  ===============
  #3.遍历所有目录,挨个发送

  for file in $@
  do 
    #4.判断文件是否存在
    if [ -e $file ]
       then
           #5.获取父目录
           pdir=$(cd -P $(dirname $file);pwd)
           #6.获取当前文件的名称
           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免密登陆

  • 原理
    在这里插入图片描述
  • 操作步骤
# 1.找到隐藏的目录
cd /home/tws
ll -al #显示隐藏文件
cd .ssh/
# 2.生成公钥和私钥,此时.ssh/目录下会生成私钥id_rsa和公钥id_rsa.pub
ssh-keygen -t rsa 
-rw-------. 1 tws tws 1675 1015 10:42 id_rsa
-rw-r--r--. 1 tws tws  395 1015 10:42 id_rsa.pub
-rw-r--r--. 1 tws tws  558 1015 09:19 known_hosts
# 3.将公钥拷贝到要免密登录的目标机器上
ssh-copy-id hadoop179 # hadoop179为目标主机名
ssh hadoop179 # 此时就是免密了
  • .ssh文件夹下(~/.ssh)的文件功能解释
文件名作用
known_hosts记录ssh访问过计算机的公钥(public key)
id_rsa生成的私钥
id_rsa.pub生成的公钥
authorized_keys存放授权过的无密登录服务器公钥

8 集群配置

8.1 集群部署规划

  • 注意事项
    • NameNode和SecondaryNameNode不要安装在同一台服务器上
    • ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上
Hadoop178Hadoop179Hadoop180
HDFSNameNode DataNodeDataNodeSecondaryNameNode
DataNode
YarnNodeManagerResourceManager
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) 核心配置文件
  • 配置core-site.xml
cd $HADOOP_HOME/etc/hadoop
vim core-site.xml
  • 文件内容如下
<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop178:8020</value>
    </property>

    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>

    <!-- 配置HDFS网页登录使用的静态用户为atguigu -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>atguigu</value>
    </property>
</configuration>

(2) HDFS配置文件
  • 配置hdfs-site.xml
vim hdfs-site.xml
  • 文件内容如下
<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop178:9870</value>
    </property>
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop180:9868</value>
    </property>
</configuration>

(3) YARN配置文件
  • 配置yarn-site.xml
vim hdfs-site.xml
  • 文件内容如下:
<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <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配置文件
  • 配置mapred-site.xml
vim mapred-site.xml
  • 文件内容如下
<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <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
  • 启动HDFS
[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信息
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值