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 [ $# -lt 1 ]
- then
- echo Not Enough Arguement!
- exit;
- fi
- #2. 遍历集群所有机器
- for host in host1 host2 host3
- 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
复制代码- # 添加可执行权限
- 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>
复制代码 配置
- # 在底部增加以下内容:
- export HDFS_NAMENODE_USER=hadoop
- export HDFS_DATANODE_USER=hadoop
- export HDFS_SECONDARYNAMENODE_USER=hadoop
- export YARN_RESOURCEMANAGER_USER=hadoop
- export YARN_NODEMANAGER_USER=hadoop
- # 修改以下配置
- export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
- export JAVA_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是前提)常用
- # 整体启动/停止HDFS
- start-dfs.sh/stop-dfs.sh
- # 整体启动/停止YARN
- start-yarn.sh/stop-yarn.sh
复制代码 2.6.3 集群启停脚本
- # hadoop集群启停脚本(包含hdfs,yarn,historyserver):myhadoop.sh
- #!/bin/bash
- if [ $# -lt 1 ]
- then
- echo "No Args Input..."
- exit ;
- fi
- case $1 in
- "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
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |