赞
踩
做一个hadoop的配置流程的全记录,把遇到的问题和细节全都记录了下来。
目录
文章中安装包的导入位置为opt/software
安装包的安装位置为/usr/local/src
首先在开始安装hadoop前,准备好需要的相关安装包和配置
- #安装vim编辑器:
- yum install -y vim
- #安装rsync远程同步工具
- yum install -y rsync
我这里使用jdk 1.8 版本,hadoop 3.3.4版本
这是jdk的下载地址
https://www.oracle.com/java/technologies/downloads/#java8
选择符合你电脑的版本(正常使用Windows的选择最下方即可)
hadoop的下载地址
https://hadoop.apache.org/releases.html
选择下载hadoop的版本,下载对应版本的binary安装包
(2)如果你的集群虚拟机已经都创建完成,且确保网络,ssh密钥登陆 都做好了后,就可以开始安装jdk和hadoop了
如果网络还没有完成,可以看我的另一篇文章,把网络配置文件确保配置完成。
如果ssh密钥连接还没有做好,可以参考我的另一篇文章。这一步是集群配置的关键
导入安装包到opt/software中解压
- tar -zxvf /opt/software/jdk-8u341-linux-x64.tar.gz -C /usr/local/src
-
- tar -zxvf /opt/software/hadoop-3.3.4.tar.gz -C /usr/local/src/
解压安装包到/usr/local/src
进入安装目录,修改对应安装包文件名,改成jdk,hadoop
(注意如果不修改文件名注意配置环境变量文件中对应文件名也要更改)
- 修改jdk,hadooop所在目录的所属用户
- chown -R hadoop:hadoop /usr/local/src
- #JAVA_HOME
- export JAVA_HOME=/usr/local/src/jdk
- export PATH=$PATH:$JAVA_HOME/bin
- 保存后退出
- :wq
- #HADOOP_HOME
- export HADOOP_HOME=/usr/local/src/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
重启配置文件,使其生效
source /etc/profile
如果没有打错字符的话不应该出错
java -version #测试jdk
hadoop version #测试hadoop
在/usr/local/src/hadoop/etc/hadoop 中的对应配置文件中加入下面的相关参数
- <!-- 指定NameNode的地址 -->
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://master:9000</value>
- </property>
-
- <!-- 指定hadoop数据的存储目录 -->
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/usr/local/src/hadoop/data</value>
- </property>
-
- <!-- 配置HDFS网页登录使用的静态用户为hadoop -->
- <property>
- <name>hadoop.http.staticuser.user</name>
- <value>hadoop</value>
- </property>
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
- <!-- nn web端访问地址-->
- <property>
- <name>dfs.namenode.http-address</name>
- <value>master:9870</value>
- </property>
- <!-- 2nn web端访问地址-->
- <property>
- <name>dfs.namenode.secondary.http-address</name>
- <value>slave2:9868</value>
- </property>
- <!-- 指定MR走shuffle -->
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
-
- <!-- 指定ResourceManager的地址-->
- <property>
- <name>yarn.resourcemanager.hostname</name>
- <value>master</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>
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
- <!-- 指定MapReduce程序运行在Yarn上 -->
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
(也在/usr/local/src/hadoop/etc/hadoop 中)
(如果没有创建即可)
(注意不要有空行,最后一行不要留有空格)
修改hadoop-env.sh文件中,JAVA_HOME=对应信息,改成你的jdk目录
PS:注意删除‘ # ’注释符号
#安装rsync远程同步工具 每台虚拟机都要安装
yum install -y rsync
ps:注意我的脚本参数,需要根据你自己的虚拟机名,改变for循环遍历参数
- #!/bin/bash
- #1. 判断参数个数
- if [ $# -lt 1 ]
- then
- echo Not Enough Arguement!
- exit;
- fi
- #2. 遍历集群所有机器
- for host in master slave1 slave2
- 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
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
- #我这图省事直接赋予了777权限
- chmod 777 xsync
sed -i 's/\r$//' xsync
因为这个文件在Windows 下编辑过,在Windows下每一行结尾是\n\r,而Linux下则是\n,所以才会有多出来的\r。
使用指令
sed -i 's/\r$//' xxxxxxx
,上面的指令会把 xxxxxxx 中的\r 替换成空白!
ps:xsync脚本命令一定要手动输入,复制粘贴会导致路径名后有空格,导致无法识别路径
使用脚本时,要注意如果在绝对路径下使用xsync,可以直接使用,
如果没有在绝对路径下,需要在命令前加上sh ,或者在/etc/profile中添加环境变量
- sh xsync /etc/profile #同步环境变量
- sh xsync /usr/local/src #同步jdk,hadoop
hdfs namenode -format
只要没有报错,就说明hadoop初始化成功了
- #在master虚拟机上启动
- start-all.sh
(1)添加配置mapred-site.xml,yarn-site.xml
mapred-site.xml
- <!-- 历史服务器端地址 -->
- <property>
- <name>mapreduce.jobhistory.address</name>
- <value>master:10020</value>
- </property>
-
- <!-- 历史服务器web端地址 -->
- <property>
- <name>mapreduce.jobhistory.webapp.address</name>
- <value>master:19888</value>
- </property>
-
- <property>
- <name>mapreduce.jobhistory.done-dir</name>
- <value>/history/done</value>
- </property>
- <property>
- <name>mapreudce.jobhistory.intermediate.done-dir</name>
- <value>/history/done/done_intermediate</value>
- </property>
-
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
yarn-site.xml
- <!-- 开启日志聚集功能 -->
- <property>
- <name>yarn.log-aggregation-enable</name>
- <value>true</value>
- </property>
- <!-- 设置日志聚集服务器地址 -->
- <property>
- <name>yarn.log.server.url</name>
- <value>http://master:19888/jobhistory/logs</value>
- </property>
- <!-- 设置日志保留时间为7天 -->
- <property>
- <name>yarn.log-aggregation.retain-seconds</name>
- <value>604800</value>
- </property>
(2)分发配置到其他虚拟机
- xsync /usr/local/src/hadoop/etc/hadoop/mapred-site.xml
- xsync /usr/local/src/hadoop/etc/hadoop/yarn-site.xml
如果没有按照我上面的步骤配置xsync,也可以下载配置文件到电脑中,在依次上传到其他虚拟机
(3)在master启动历史服务器
- mr-jobhistory-daemon.sh start historyserver
-
- #如果出现权限不够,看看当前用户是否切换错误,以及hadoop文件用户所属
端口名称 | Hadoop3.x |
NameNode内部通信端口 | 8020 / 9000/9820 |
NameNode HTTP UI | 9870 |
MapReduce查看执行任务端口 | 8088 |
历史服务器通信端口 | 19888 |
红色标注表示为教程中使用的端口号
在浏览器中输入 对应主机名:对应端号,即可进入对应web端界面
如果无法登陆到jobhistory,且之前配置没有问题的话,大概率是hadoo的安全模式开启了
hadoop dfsadmin -safemode leave
退出即可
感谢您的观看,您的支持是我最大的动力。
如有侵权,请联系作者下架
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。