1.下载
Hadoop下载地址:点击此处
下载完成后把hadoop-3.1.3.tar.gz导入到opt目录下面的software文件夹(自定义目录)下面
1.1解压文件
# 进入到安装目录中
cd /opt/software/
# 解压该文件
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
# 查看是否解压成功ls/opt/module/
# 获取安装路径pwd/opt/module/hadoop-3.1.3
1.2 添加hadoop环境变量
# 创建环境变量文件
sudo vim /etc/profile.d/my_env.sh
# 在my_env.sh文件末尾添加如下内容:(shift+g)#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
# 保存后推出
:wq
# 让修改后的文件生效
source /etc/profile
# 测试是否安装成功
hadoop version
Hadoop 3.1.3
# 如果hadoop命令不能用可以重启试试
sudo reboot
1.3 hadoop各个目录介绍
(1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例
2 Hadoop集群安装
Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。
Hadoop官方网站:添加链接描述
本章主要介绍完全分布式模式安装,也就是集群安装。
2.1 环境准备
准备3台客户机(关闭防火墙、静态ip、主机名称)
安装JDK并配置环境便变量
安装Hadoop并配置环境变量
2.2 编写分发脚本
#!/bin/bash#1. 判断参数个数if[$#-lt1]thenecho Not Enough Arguement!exit;fi#2. 遍历集群所有机器forhostin host1 host2 host3
doecho====================$host====================#3. 遍历所有目录,挨个发送forfilein$@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:$pdirelseecho$file does not exists!fidonedone
# 添加可执行权限
chmod +x xsync
# 将脚本复制到/bin中,以便全局调用
sudo cp xsync /bin/
2.3 SSH无密登录配置
# 生成公钥和私钥
ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
# 使用ssh-copy-id命令可以把本地的ssh公钥文件安装到远程主机对应的账户中
ssh-copy-id host1
ssh-copy-id host2
ssh-copy-id host3
# 需要给自己分一次 然后在其他机器上执行一遍同样的步骤
2.4 集群配置
2.4.1集群部署规划
**注意**:NameNode和SecondaryNameNode不要安装在同一台服务器
**注意**:ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。
host1host2host3HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNodeYARNNodeManagerResourceManager NodeManagerNodeManager
2.4.2 集群配置
配置core-site.xml
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 指定NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://host1:9820</value></property><!-- 指定hadoop数据的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop-3.1.3/data</value></property><!-- 配置HDFS网页登录使用的静态用户为hadoop--><property><name>hadoop.http.staticuser.user</name><value>hadoop</value></property><!-- 配置该hadoop(superUser)允许通过代理访问的主机节点 --><property><name>hadoop.proxyuser.hadoop.hosts</name><value>*</value></property><!-- 配置该hadoop(superUser)允许通过代理用户所属组 --><property><name>hadoop.proxyuser.hadoop.groups</name><value>*</value></property><!-- 配置该hadoop(superUser)允许通过代理的用户--><property><name>hadoop.proxyuser.hadoop.groups</name><value>*</value></property></configuration>
配置hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- nn web端访问地址--><property><name>dfs.namenode.http-address</name><value>host1:9870</value></property><!-- 2nn web端访问地址--><property><name>dfs.namenode.secondary.http-address</name><value>host3:9868</value></property></configuration>
配置yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 指定MR走shuffle --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定ResourceManager的地址--><property><name>yarn.resourcemanager.hostname</name><value>host2</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><!-- yarn容器允许分配的最大最小内存 --><property><name>yarn.scheduler.minimum-allocation-mb</name><value>512</value></property><property><name>yarn.scheduler.maximum-allocation-mb</name><value>4096</value></property><!-- yarn容器允许管理的物理内存大小 --><property><name>yarn.nodemanager.resource.memory-mb</name><value>4096</value></property><!-- 关闭yarn对物理内存和虚拟内存的限制检查 --><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>
配置mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 指定MapReduce程序运行在Yarn上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>
配置
# 在底部增加以下内容:exportHDFS_NAMENODE_USER=hadoop
exportHDFS_DATANODE_USER=hadoop
exportHDFS_SECONDARYNAMENODE_USER=hadoop
exportYARN_RESOURCEMANAGER_USER=hadoop
exportYARN_NODEMANAGER_USER=hadoop
# 修改以下配置exportHADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
exportJAVA_HOME=/opt/module/jdk-1.8.0
2.4.3分发配置文件
xsync /opt/module/hadoop-3.1.3/etc/hadoop/
2.4.4 配置workers
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
# 插入一下内容
host1
host2
host3
# 分发配置文件
xsync /opt/module/hadoop-3.1.3/etc
2.5 启动集群
如果集群是第一次启动,需要在host1节点格式化NameNode(注意格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)
hdfs namenode -format
# 启动HDFS
sbin/start-dfs.sh
# 在配置了ResourceManager的节点(host2)启动YARN
sbin/start-yarn.sh
2.5.1 查看web端
HDFS:http://host2:9870
YARN:http://host3:8088
需要在本机中配置hosts,或者输入ip地址。
2.6 关闭集群
2.6.1 各个服务组件逐一启动/停止
# 分别启动/停止HDFS组件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
# 启动/停止YARN
yarn --daemon start/stop resourcemanager/nodemanager
2.6.2 各个模块分开启动/停止(配置ssh是前提)常用
# 整体启动/停止HDFSstart-dfs.sh/stop-dfs.sh
# 整体启动/停止YARNstart-yarn.sh/stop-yarn.sh
2.6.3 集群启停脚本
# hadoop集群启停脚本(包含hdfs,yarn,historyserver):myhadoop.sh#!/bin/bashif[$#-lt1]thenecho"No Args Input..."exit;ficase$1in"start")echo" =================== 启动 hadoop集群 ==================="echo" --------------- 启动 hdfs ---------------"ssh host1 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"echo" --------------- 启动 yarn ---------------"ssh host2 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"echo" --------------- 启动 historyserver ---------------"ssh host3 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver";;"stop")echo" =================== 关闭 hadoop集群 ==================="echo" --------------- 关闭 historyserver ---------------"ssh host1 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"echo" --------------- 关闭 yarn ---------------"ssh host2 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"echo" --------------- 关闭 hdfs ---------------"ssh host3 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh";;
*)echo"Input Args Error...";;esac
版权归原作者 Michelangelo-li 所有, 如有侵权,请联系我们删除。