一、Hadoop的组成
1. HDFS
Hadoop分布式文件系统 海量数据的存储
-
NameNode 集群中的主节点,用来管理元数据(文件属性信息)
-
DataNode 集群中的从节点,用来管理文件块
-
SecondaryNameNode 集群中的辅助节点,用于NameNode的存储优化和数据恢复
2. YARN
分布式资源(cpu、内存等计算资源)调度服务
-
ResourceManager 集群中的主节点,用于接收客户都提交的任务,并将任务分发给NodeManager
-
NodeManager 集群中的从节点,用于启动容器运行RM分发的任务
3. MapReduce
分布式计算框架
-
Map 将数据进行一一映射
-
Reduce 将Map执行完的结果进行聚合
二、hadoop集群搭建的准备工作
-
设置静态IP
# 检查网卡配置 vim /etc/sysconfig/network-scripts/ifcfg-ens33 # 将网卡启动方式设置为none或者static # 如果是dhcp 则每次重启都会重新分配IP BOOTPROTO=none # 修改之后需要重启网络 systemctl restart network
-
修改主机名
# 查看当前主机名 hostname # 修改主机名 hostnamectl set-hostname 主机名
-
关闭防火墙
# 关闭防火墙 systemctl stop firewalld # 禁用防火墙的开机启动 systemctl disable firewalld # 查看防火墙服务状态 systemctl status firewalld
-
安装JDK
-
上传安装包到Linux服务器
-
解压安装包
-
# tar命令用来解压tar类型的存档文件 # z 进行gzip格式文件的压缩或解压 # x 解开压缩包 # v 显示解压或压缩细节 # f 将文件解压到当前目录 tar zxvf jdkxxxx.tar.gz # 使用mv将文件夹修改为更简短的名称 # 软件名称-软件版本
-
配置环境变量
# 可以在三个文件中配置环境变量 # 系统环境变量 /etc/profile # 当前用户的环境变量 ~/.bashrc ~/.bash_profile export JAVA_HOME=/opt/jdk-1.8 export PATH=$JAVA_HOME/bin:$PATH
-
将服务器克隆为3台,并分别设置静态IP,分别设置主机名
192.168.253.10 192.168.253.11 192.168.253.12
-
设置ip和主机名映射
# Linux中使用/etc/hosts文件记录IP和主机名的映射 # 配置映射是为了将来访问其他机器时不需要记忆ip地址 # 配置映射 可以在所有的软件配置文件中使用主机名代替IP,将来IP改动时,只需要改动hosts文件,不需要改动软件配置文件 vim /etc/hosts 192.168.253.10 zhaohui01 192.168.253.11 zhaohui02 192.168.253.12 zhaohui03
-
设置SSH免密登录
# 分布式程序中 集群之间需要进行大量的数据传输和通信,需要使用SSH协议进行远程连接,如果每次都需要验证密码,效率极差 # 可以通过配置免密登录 实现集群内部通畅的通信 # 1.移除之前的残留文件 rm -rf ~/.ssh # 2.创建密钥文件 ssh-keygen -t rsa # 3.分发密钥 ssh-copy-id zhaohui01 yes 密码 ssh-copy-id zhaohui02 yes 密码 ssh-copy-id zhaohui03 yes 密码
三、安装完全分布HDFS服务
-
关于版本:
-
几乎所有的大数据组件,版本都有三组数字组成
x.y.z
-
x : 大版本,通常x不同的版本之间,API有差异,不互相兼容
-
y : 中版本,通常x相同y不同的版本之间,api相互兼容,会有少量的优化和重构
-
z : 小版本,通常x,y相同,z不同的版本之间,功能和性能完全一样,修复了一些紧急的漏洞,不要使用小版本为0的版本
-
-
2.7.x是目前企业中使用的相对稳定版本,应用最广泛,与Spark兼容性优良
-
2.6.x 和3.0.x也是企业中常见版本
-
上传解压安装包
[root@zhaohui01 ~]# cd /opt/ [root@zhaohui01 opt]# ls jdk-1.8 tar [root@zhaohui01 opt]# tar zxvf hadoop-2.7.7.tar.gz
# 由于Hadoop的安装和使用是在Linux服务器上,所以可以直接删除所有的*.cmd的windows命令 bin # Hadoop集群的操作命令 etc # Hdoop的配置文件 include # \ lib # -> 需要依赖的c语言库 libexec # / LICENSE.txt# \ NOTICE.txt # -> 声明和说明文档 README.txt # / sbin # 集群启动关闭之类的管理命令 share # Hadoop运行需要依赖的jar文件
1.修改配置文件
· hadoop-env.sh
# 设置JavaHome export JAVA_HOME=/opt/jdk-1.8
-
core-site.xml
<configuration> <property> <!-- 设置Hadoop用来存储数据的目录,设置到Hadoop安装目 录中 --> <name>hadoop.tmp.dir</name> <value>/opt/hadoop-2.7.7/data</value> </property> <property> <!-- 设置HDFS使用的默认连接url --> <name>fs.defaultFS</name> <value>hdfs://zhaohui01:8020</value> </property> </configuration>
-
hdfs-site.xml
<configuration> <property> <!-- 配置SecondaryNameNode启动的机器 --> <name>dfs.namenode.secondary.http-address</name> <value>zhaohui03:50090</value> </property> </configuration>
-
slaves
-
设置启动DataNode服务的节点
zhaohui01 zhaohui02 zhaohui03
2.分发安装包
# r 递归发送文件夹 # q 静默发送 不显示细节 scp -rq 本地文件夹 目标主机:目标路径 scp -rq /opt/hadoop-2.7.7 zhaohui02:/opt scp -rq /opt/hadoop-2.7.7 zhaohui03:/opt
3.配置环境变量
echo 'export HADOOP_HOME=/opt/hadoop-2.7.7' >> /etc/profile echo 'export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH' >> /etc/profile source /etc/profile
4.对Namenode进行格式化
hdfs namenode -format
5.启动集群尝试操作
start-dfs.sh [root@zhaohui01 ~]# jps 24952 DataNode 24827 NameNode [root@zhaohui02 ~]# jps 5124 DataNode [root@zhaohui03 ~]# jps 20851 DataNode 20924 SecondaryNameNode
6.访问NameNode的webUI
192.168.253.10:50070
注意:集群崩溃问题,namenode发现未启动时
第一步,关闭进程
sbin/stop-dfs.sh
第二步,删除每个集群的data和logs
rm -rf data/ logs/
第三步,格式化namenode
hdfs namenode -format
第四步,启动集群
sbin/start-dfs.sh
四、集群启动/停止方法
1、各个模块分开启动/停止
(1)整体启动/停止HDFS
start-dfs.sh/stop-dfs.sh
(2)整体启动/停止YARN
start-yarn.sh/stop-yarn.sh
2、各个服务逐一启动/停止
(1)分别启动/停止HDFS组件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
(2)启动/停止YARN
yarn --daemon start/stop resourcemanager/nodemanager