高可靠性:Hadoop底层维护多个数据副本,即使Hadoop某个计算元素或存储出现故障也不会导致数据的流失。高扩展性:在集群分配任务数据,可方便地扩展节点。高效性:在MapReduce的思想下,Hadoop是并行工作的,加快任务处理速度高容错性:能够自动将失败的任务重新分配 1.2、Hadoop3.x组成
Hadoop3.x组成和2.x没有区别,内置组件分别有MapReduce(计算),Yarn(资源调度),HDFS(数据存储),Common(辅助工具)四种 1.3、HDFS架构概述
HDFS(Hadoop Distributed File System),是一个分布式文件系统
内置三种组件,NameNode,DataNode,SecondaryNameNode
- NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在的DataNode等DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和SecondaryNameNode(2nn):每隔一段时间对NameNode元数据备份
YARN(Yet Another Resource Negotiator),是Hadoop的资源管理器
内置四种组件,ResourceManager(RM),NodeManager(NM),ApplicationMaster(AM),Container
- ResourceManager:集群的领导者NodeManager:单个节点的领导者ApplicationMaster:单个任务运行的老大Container:容器,相当一台独立的服务器,里面封装了任务运行所需要的资源客户端可以有多个,集群上可以运行多个ApplicationMaster,每个NodeManager上可以有多个Container
MapReduce将计算过程分为两个阶段:Map和Reduce
- Map阶段并行处理输入数据Reduce阶段对Map结果进行汇总
- client向集群提交一个任务client提交完任务后,YARN中的ResourceManager寻找节点,开启一个Container,然后把任务放到Container中,任务叫AppMstr,AppMstr向ResourceManager申请任务开启所需资源。ResourceManager寻找那些节点有资源,AppMstr开启MapTask,每一个MapTask独立运行,最终把结果汇总写入HDFS上
- 修改网络IP地址为静态地址,避免变化,方便节点服务器间的相互通信
vim /etc/sysconfig/network-scripts/ifcfg-ens33
- 修改下列值
TYPE="Ethernet" #网络类型(通常是Ethemet) PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" #IP的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议) DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="e83804c1-3257-4584-81bb-660665ac22f6" #随机id DEVICE="ens33" #接口名(设备,网卡) ONBOOT="yes" #系统启动的时候网络接口是否有效(yes/no) #IP地址 IPADDR=192.168.10.100 #网关 GATEWAY=192.168.10.2 #域名解析器 DNS1=192.168.10.2
- 修改完成后保存退出,并重启网络服务
systemctl restart network
- 重启完成后ifconfig查询当前IP是否修改成功保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同
- 修改主机名称
vim /etc/hostname hadoop100
- 配置linux克隆主机名称映射hosts文件,打开/etc/hosts并添加节点的ip及主机名,然后重启
vim /etc/hosts 192.168.10.100 hadoop100 192.168.10.101 hadoop101 192.168.10.102 hadoop102 #重启 reboot
- 修改windows的主机映射文件(hosts文件)
#进入C:WindowsSystem32driversetc路径 #打开hosts文件并添加如下内容,然后保存 192.168.10.100 hadoop100 192.168.10.101 hadoop101 192.168.10.102 hadoop102
- 测试hadoop100虚拟机是否可以链接网络
ping www.baidu.com
- 安装epel-release
Extra Packages for Enterprise Linux是为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。相当于是一个软件仓库,大多数rpm包在官方 repository 中是找不到的
#安装epel-release yum install -y epel-release #工具包集合 yum install -y net-tools #vim:编辑器 yum install -y vim #关闭防火墙 systemctl stop firewalld #关闭防火墙开机自启 systemctl disable firewalld.service
- 创建hadoop用户,并修改hadoop用户的密码
#在root用户下 useradd hadoop passwd hadoop
- 配置hadoop用户具有root权限,方便后期加sudo执行root权限的命令
#在root用户下 vim /etc/sudoers #在%wheel下一行添加 ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL #这行 hadoop ALL=(ALL) NOPASSWD:ALL #hadoop这一行不要直接放到root行下面,因为所有用户都属于wheel组,你先配置了hadoop具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以hadoop要放到%wheel这行下面。
- 在/opt目录下创建文件夹,并修改所属主和所属组
mkdir /opt/module mkdir /opt/software #修改module、software文件夹的所有者和所属组均为hadoop用户 chown hadoop:hadoop /opt/module chown hadoop:hadoop /opt/software #查看module、software文件夹的所有者和所属组 cd /opt/ ll
- 卸载虚拟机自带的JDK
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps reboot2.3、安装jdk,hadoop
- 进入hadoop用户
ls /opt/software/
- 用XShell传输工具将JDK,Hadoop导入到opt目录下面的software文件夹下面在Linux系统下的opt目录中查看软件包是否导入成功
[hadoop@hadoop100 ~]$ ls /opt/software/
- 解压JDK,Hadoop到/opt/module目录下
[hadoop@hadoop100 software]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/ [hadoop@hadoop100 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
- 配置JDK,Hadoop环境变量
sudo vim /etc/profile.d/my_env.sh #JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin #HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin #注意安装路径路径一定要对 #保存后更新下环境变量 source /etc/profile
- 测试JDK,Hadoop是否安装成功
java -version hadoop version #如果出现版本号则安装成功
- 用hadoop100为模板,克隆两份,并修改IP地址和主机名
#修改主机名 vim /etc/hostname #hadoop101 #hadoop102 #修改IP地址 vim /etc/sysconfig/network-scripts/ifcfg-ens33 #仅修改IP_ADDR #IPADDR=192.168.10.101 #IPADDR=192.168.10.102
- hadoop重要目录
#(1)bin目录:存放对Hadoop相关服务(hdfs,yarn,mapred)进行操作的脚本 #(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件 #(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能) #(4)sbin目录:存放启动或停止Hadoop相关服务的脚本 #(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例 #进入Hadoop文件,ll看一下用户组是否属于hadoop,如果不是请重新反汇root用户执行用户组变更3、hadoop运行模式
Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。
- 本地模式:单机运行,只是用来演示一下官方案例。生产环境不用。伪分布式模式:也是单机运行,但是具备Hadoop集群的所有功能,一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试,生产环境不用。完全分布式模式:多台服务器组成分布式环境。生产环境使用。
- 创建在hadoop-3.1.3文件下面创建一个wcinput文件夹
[hadoop@hadoop100 hadoop-3.1.3]$ mkdir wcinput
- 在wcinput文件下创建一个word.txt文件
[hadoop@hadoop100 hadoop-3.1.3]$ cd wcinput
- 编辑word.txt文件
[hadoop@hadoop100 wcinput]$ vim word.txt #在文件中输入如下内容 hadoop yarn hadoop mapreduce hadoop hadoop #保存退出
- 回到Hadoop目录/opt/module/hadoop-3.1.3执行程序
[hadoop@hadoop100 hadoop-3.1.3]$ cat wcoutput/part-r-00000
- 查看结果
hadoop 2 hadoop 2 mapreduce 1 yarn 1



