【Hadoop】学习笔记(一)

一、入门

1.1、Hadoop优势

  1. 高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。
    在这里插入图片描述
  2. 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
    在这里插入图片描述
  3. 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
    在这里插入图片描述
  4. 高容错性:能够自动将失败的任务重新分配。
    在这里插入图片描述

1.2、Hadoop组成

在Hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大。
在Hadoop2.x时代,增加了Yarn。Yarn只负责资源的调度,MapReduce只负责运算。
在Hadoop3.x在组成上没有变化。

在这里插入图片描述

1.2.1、HDFS架构概述

Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。

  1. NameNode (nn)︰存储文件的元数据,如文件名文件目录结构文件属性(生成时间、副本数、文件权限),以及每个文件的块列表块所在的DataNode等。
  2. DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和
  3. Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份

1.2.2、YARN架构概述

Yet Another Resource Negotiator简称YARN,另一种资源协调者,是Hadoop 的资源管理器。

  1. ResourceManager (RM):整个集群资源(内存、CPU等)的老大
  2. NodeManager (NM)︰单个节点服务器资源老大
  3. ApplicationMaster (AM)︰单个任务运行的老大
  4. container:容器,相当一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。

在这里插入图片描述
客户端可以有多个

集群上可以运行多个ApplicationMaster

每个NodeManager上可以有多个Container

1.2.3、MapReduce架构概述

MapReduce将计算过程分为两个阶段: Map和 Reducee

  1. Map阶段并行处理输入数据
  2. Reduce阶段对Map结果进行汇总k

在这里插入图片描述

1.2.4、HDFS、YARN、MapReduce三者关系

在这里插入图片描述

1.3、大数据技术生态体系

在这里插入图片描述

二、Hadoop运行环境搭建

2.1、模板虚拟机环境准备

2.1.1、CentOS 硬盘分配

挂载点:/boot 期望容量:1G 文件系统:ext4
挂载点:swap 期望容量:4G 文件系统:swap
挂载点:/ 期望容量:默认 文件系统:xfs

2.1.2、IP和主机名称

su root
vim /etc/sysconfig/network-scripts/ifcfg-ens33

更改
BOOTPROTO=" static"
添加
IPADDR=“192.168.3.24” #IP地址
PREFIX=“24”
GATEWAY=“192.168.3.1” #网关地址
DNS1=“202.97.224.68” #域名解析器
IPV6_PRIVACY=“no”

vim /etc/hostname

更改为自己的主机名称

vim /etc/hosts

添加主机映射
192.168.3.24 master
192.168.3.25 slave1
192.168.3.26 slave2

reboot

在win10上配置主机映射
C:\windows\system32\drivers\etc
添加主机映射
192.168.3.24 master
192.168.3.25 slave1
192.168.3.26 slave2

2.1.3、模板虚拟机准备完成

【首先保证网络畅通】
在这里插入图片描述
【安装 epel-release】

yum install -y epel-release

【关闭防火墙,关闭防火墙开机自启】

systemctl stop firewallde
systemctl disable firewalld.service

【删除自带的jdk】

rpm -qa | grep jdk
rpm -e --nodeps   XXXXX.jdk

【安装jdk】
【安装Hadoop】
【配置 Hadoop {参考本文2.4、集群配置} 】
【配置 workers {参考本文2.5.1、配置 workers} 】

2.2、克隆虚拟机

修改克隆机IP
修改克隆机主机名称

2.3、ssh免密登入

在这里插入图片描述

cd .ssh/
ssh-keygen -t rsa
ssh-copy-id 要传给主机的主机名

2.4、集群配置

2.4.1、集群部署规划

NameNode和 SecondaryNameNode不要安装在同一台服务器
ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上

在这里插入图片描述

2.4.2、配置文件说明

Hadoop 配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。
在这里插入图片描述
在这里插入图片描述

2.4.2.1、核心配置文件 core-site. xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://master:9000</value>
		<description>指定默认NameNode的访问地址以及端口号</description>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/nacl/hadoop/data/tmp</value>
		<description>其它临时目录的父目录,会被其它临时目录用到</description>
	</property>
	<property>
		<name>hadoop.http.staticuser.user</name>
		<value>root</value>
		<description>配置HDFS 网页登录使用的静态用户</description>
	</property>
</configuration>

2.4.2.2、HDFS 配置文件 hdfs-site.xml
<configuration>
	<property>
		<name>dfs.namenode.http-address</name>
		<value>master:9870</value> 
		<description>hdfs web端访问地址</description>
	</property>
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>slave2:9868</value>
		<description>2nn web端访问地址</description>
	</property>
</configuration>
2.4.2.3、YARN配置文件 yarn-site.xml
<configuration>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
		<description>获取数据的方式是shuffle</description>
	</property>
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>slave1</value>
		<description>指定ResourceManager的地址</description>
	</property>
	<property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
            NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
            RED_HOME</value>
        <description>环境变量的继承</description>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
        <description>开启日志聚集功能</description>
    </property>
    <property>
        <name>yarn.log.server.url</name>
        <value>http://master:19888/jobhistory/logs</value>
        <description>设置日志聚集服务器地址</description>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
        <description>设置日志保留时间为 7 天</description>
    </property>
    <property>
     <name>yarn.nodemanager.pmem-check-enabled</name>
     <value>false</value>
   </property>
   <property>
     <name>yarn.nodemanager.vmem-check-enabled</name>
     <value>false</value>
   </property>
</configuration>
2.4.2.4、MapReduce配置文件 mapred-site.xml
<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
		<description>指定MapReduce程序运行在Yarn上</description>
	</property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
        <description>历史服务器端地址</description>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
        <description> 历史服务器 web 端地址</description>
    </property>
</configuration>

2.5、群起集群

2.5.1、配置 workers

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

在该文件中增加Hadoop主机名称

2.5.2、启动集群

(1)如果集群是第一次启动,需要在 hadoop102节点格式化NameNode ( 注意:格式化 NameNode,会产生新的集群id,导致NameNode,和 DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode,和 datanode,进程,并且要删除所有机器的data和 logs目录,然后再进行格式化。 )

hdfs namenode -format
sbin start-all.sh

在配置了ResourceManager的节点启动YARN
sbin start-yarn.sh
在配置了jobhistory的节点启动历史服务器
mapred --daemon start historyserver

2.5.3、常用脚本

2.5.3.1、集群分发

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
 echo Not Enough Arguement!
 exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
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 not exists!
 fi
 done
done

执行时,只需:xsync 文件或文件夹1 文件或文件夹2.....执行即可。

2.5.3.2、集群集中启动、停止

#!/bin/bash

if [ $# -lt 1 ]
then
  echo "No args Input..."
  exit;
fi

case $1 in
"start")
  echo "============= 启动hadoop集群 ======================"

  echo "------------- 启动 hdfs ---------------------------"
  ssh master "/nacl/hadoop/hadoop-3.3.6/sbin/start-dfs.sh"
  echo "------------- 启动 yarn ---------------------------"
  ssh slave1 "/nacl/hadoop/hadoop-3.3.6/sbin/start-yarn.sh"
  echo "---------- 启动 historyserver ----------------------"
  ssh master "/nacl/hadoop/hadoop-3.3.6/bin/mapred --daemon start historyserver"
;;
"stop")
  echo "================ 关闭hadoop集群 =========================="

  echo "-------------- 关闭historyserver ------------------------"
  ssh master "/nacl/hadoop/hadoop-3.3.6/bin/mapred --daemon stop historyserver"
  echo "---------------- 关闭 yarn ------------------------------"
  ssh slave1 "/nacl/hadoop/hadoop-3.3.6/sbin/stop-yarn.sh"
  echo "---------------- 关闭 hdfs ------------------------------"
  ssh master "/nacl/hadoop/hadoop-3.3.6/sbin/stop-dfs.sh"
;;
*)
  echo "Input Args Error..."
;;
esac

使用
停止myhadoop.sh stop
启动myhadoop.sh start

2.5.3.3、遍历集群中每台服务器调用jps查看上面的java进程启动情况

#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
  echo ================= $host =================
  ssh $host jps
done

使用 jpsall

三、常用端口和配置文件

Hadoop 3.x中:

● HDFS NameNode 内部通讯端口:8020/9000/9820
● HDFS NameNode 对用户的web查询端口:9870
● Yarn查看任务运行情况的web页面端口:8088
● 历史服务器对外暴露的web页面端口:19888

hadoop 3.x中:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、workers

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值