Linux下的Hadoop分布式安装详解

打印 上一主题 下一主题

主题 848|帖子 848|积分 2544

Hadoop分布式安装详解

1.服务器准备

  1. 使用vm virtualBox安装两台centos虚拟机master,hadoop01,分别作为主机,工作节点机器,此两台机器已经配置了免密
复制代码
2.软件准备

hadoop使用:hadoop-3.2.4
jdk使用:java SE 8,由于服务器准备的是centos x86_64架构,所以使用jdk-8u411-linux-x64.tar.gz
  1. hadoop下载地址:https://mirrors.cloud.tencent.com/apache/hadoop/common/
  2. jdk下载地址:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
复制代码
3.服务器配置

以下操作如有权限标题请切换root用户
1.关闭服务器防火墙

(主机,工作机均必要修改)
  1. systemctl status firewalld 查看状态,状态如果开启
  2. systemctl stop firewalld 关闭防火墙
  3. systemctl disable firewalld 关闭开机自启动
复制代码
防火墙关闭后截图

2.修改主机名+静态的域名解析

(主机,工作机均必要修改)
修改主机名

主机名要与静态域名一致后面hdfs可视化页面上DataNode节点显示的就是主机名
  1. 查看当前服务器的hostname
  2. hostname
  3. vim /etc/hostname 主机改为master,节点机器改为hadoop01 (其实主机名可以自定义) 主机名在一个局域网内应该是唯一的
  4. 修改完成后立即生效执行
  5. systemctl restart systemd-hostnamed
复制代码

配置静态域名解析

vim /etc/hosts

留意

对于此处理解,目的就是为了可以直接使用域名举行机器之间的互通,所以以为修改主机名这步骤不是很紧张,因为核心是靠着静态解析域名hosts文件举行互通的**(因为已经修改了主机名没有实验没修改的情况,后面偶然机确认了在更新)**。
增补

后面在整理创建centos虚机文章的时候,重新加了一个节点正好验证主机名的作用,主机名修改是必要的,因为在hdfs页面上的 http address 上地点默认使用的就是主机名称见下图

修改后重启hdfs,页面已显示主机名

假如不修改从hdfs链接跳转进去是页面notfound
3.创建服务器应用用户

个人不太喜欢使用root权限,固然方便但是使用root权限部署大概也会存在风险。
  1. 创建用户
  2. useradd ldsx (自定义用户名)
  3. passwd ldsx (输入后创建密码可以忽略密码合规提示确认即可)
  4. 在应用用户目录下创建目录用于存放jdk,hadoopa安装包,hadoop数据
  5. cd /home/ldsx
  6. mkdir down_load 存放jdk hadoop安装包
  7. mkdir opt 存放初始化hadoop namenode,data的数据
复制代码
当然以上文件夹路径可以自定义设置,有权限执行即可。下文将以此部署路径用于截图参考,现实部署时如替换记得统一修改
4.jdk安装

在master中,先使用root用户修改jdk安装包rwx,方便使用应用用户解压。
  1. 把jdk移动到一个单独的目录下进行权限修改
  2. chmod 777  jdk-8u411-linux-x64.tar.gz
  3. 进行解压
  4. tar -zxvf jdk-8u411-linux-x64.tar.gz -C /home/ldsx/down_load/jdk_data_new
  5. 解压后查看版本是否成功
  6. /home/ldsx/down_load/jdk_data_new/jdk1.8.0_411/bin/java -version
复制代码
成功截图

记着这个jdk的位置后面必要配置环境变量
5.hadoop安装

在master中,先使用root用户修改hadoop安装包rwx,方便使用应用用户解压
  1. chmod 777  hadoop-3.2.4.tar.gz
  2. tar -zxvf hadoop-3.2.4.tar.gz -C /home/ldsx/down_load/hadoop_data
复制代码
体系环境变量配置

  1. 在 /etc/profile.d下创建一个自己的环境变量文件
  2. vim /etc/profile.d/my_env.sh
  3. 内容如下:
  4. #JAVA_HOME
  5. export  JAVA_HOME=/home/ldsx/down_load/jdk_data_new/jdk1.8.0_411 (更换自己实际路径)
  6. export PATH=$PATH:$JAVA_HOME/bin
  7. #HADOOP_HOME
  8. export HADOOP_HOME=/home/ldsx/down_load/hadoop_data/hadoop-3.2.4 (更换自己实际路径)
  9. export PATH=$PATH:$HADOOP_HOME/bin
  10. export PATH=$PATH:$HADOOP_HOME/sbin
复制代码
profile.d下创建文件表明

假如有疑惑为什么环境变量在profile.d下创建配置呢?
.bash_profile

.bashrc

/etc/bashrc

  1. Linux系统中环境变量加载会使用用户家目录下隐藏文件.bash_profile  .bashrc,根据不同登录方式会选择其中一种环境变量进行加载。
  2. 1.打开文件 .bash_profile发现,其本质也是加载了了~/.bashrc文件。
  3. 2.打开.bashrc文件,此文件加载了/etc/bashrc
  4. 3.打开 /etc/bashrc 其中有一行代码为加载  /etc/profile.d/下所有sh文件的
  5. 总结:所以环境变量在profile.d下设置可以提供给所有用户使用,profile.d相当于基石。加载这里方便统一管理
复制代码
hadoop环境变量配置

  1. cd /home/ldsx/down_load/hadoop_data/hadoop-3.2.4/etc/hadoop
  2. vim hadoop-env.sh (自带)
  3. 增加如下内容
  4. export HDFS_NAMENODE_USER=ldsx
  5. export JAVA_HOME=/home/ldsx/down_load/jdk_data_new/jdk1.8.0_411
  6. export HADOOP_HOME=/home/ldsx/down_load/hadoop_data/hadoop-3.2.4
  7. export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
复制代码
hadoop下目录含义

解压后进入解压文件夹,截图为文件夹中内容

  1. (1)bin目录:存放对Hadoop相关服务(hdfs,yarn,mapred)进行操作的脚本
  2. (2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件 (core,yaml,hdfs等配置)
  3. (3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
  4. (4)sbin目录:存放启动或停止Hadoop相关服务的脚本
  5. (5)share目录:存放Hadoop的依赖jar包、文档、和官方案例
复制代码
hadoop下xml文件配置

以下文件均在hadoop etc目录下
core-site.xml

核心配置包罗,hadoop集群名称,体系访问地点,临时数据存放位置,
缓冲区设置,hdfs垃圾机制等。
  1. <configuration>
  2. <!--指定文件系统地址,外部程序通过这个地址存取文件 -->
  3. <property>
  4.   <name>fs.defaultFS</name>
  5.   <value>hdfs://master:7171</value>
  6. </property>
  7. <!--指定文件临时文件地址 -->
  8. <property>
  9.   <name>hadoop.tmp.dir</name>
  10.   <value>/home/ldsx/opt/hadoopData/tmp</value>
  11. </property>
  12. <!--指定静态用户 页面使用的用户 -->
  13. <property>
  14.    <name>hadoop.http.staticuser.user</name>
  15.    <value>ldsx</value>
  16. </property>
  17. <property>
  18. <!--允许特定用户或组作为代理用户执行任务-->
  19.     <name>hadoop.proxyuser.ldsx.hosts</name>
  20.     <value>*</value>
  21. </property>
  22. <property>
  23.     <name>hadoop.proxyuser.ldsx.groups</name>
  24.     <value>*</value>
  25. </property>
  26. </configuration>
复制代码
静态用户设置部署时使用的应用用户。
hdfs-site.xml


  • NameNode,secondaryNameNode的地点(secondaryNameNode不设置会在master启动)
  • namenode,datanode数据保存路径
  • 文件副本保存数
  • block块巨细默认128M
  1. <property>
  2.   <name>dfs.replication</name>
  3.   <value>3</value>
  4. </property>
  5. <!--指定namenode数据目录 -->
  6. <property>
  7.   <name>dfs.namenode.name.dir</name>
  8.   <value>/home/ldsx/opt/hadoopData/dfs/name</value>
  9. </property>
  10. <!--指定datanode数据目录 -->
  11. <property>
  12.   <name>dfs.datanode.data.dir</name>
  13.   <value>/home/ldsx/opt/hadoopData/dfs/data</value>
  14. </property>
  15. <!--指定namenode的HTTP服务地址 -->
  16. <property>
  17.   <name>dfs.namenode.http-address</name>
  18.   <value>master:50070</value>
  19. </property>
  20. <property>
  21.     <name>hadoop.log.dir</name>
  22.     <value>/home/ldsx/opt/hadoopData/log</value>
  23. </property>
  24. <!--SecondaryNameNode的HTTP服务地址-->
  25. <property>
  26.   <name>dfs.namenode.secondary.http-address</name>
  27.   <value>hadoop01:50090</value>
  28. </property>
  29. </configuration>
复制代码
yarn-site.xml

配置yarn的resourcemanager,日记信息,保留时间,web访问页面等,yarn默认访问端口8088
yarn.resourcemanager.webapp.address 默认8088
yarn.nodemanager.webapp.address 默认8042
  1. <configuration>
  2. <!--指定resourcemanager位置 -->
  3. <property>
  4.   <name>yarn.resourcemanager.hostname</name>
  5.   <value>master</value>
  6. </property>
  7. <!-- 指定MR走shuffle -->
  8. <property>
  9.   <name>yarn.nodemanager.aux-services</name>
  10.   <value>mapreduce_shuffle</value>
  11. </property>
  12.         <!--环境变量的继承 -->
  13.    <property>
  14.         <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>
  15.     </property>
  16. <!--日志聚合打开可使用 yarn logs -applicationId <app ID> -->
  17. <property>
  18.     <name>yarn.log-aggregation-enable</name>
  19.     <value>true</value>
  20. </property>
  21. <!-- 设置日志聚集服务器地址 -->
  22. <property>
  23.     <name>yarn.log.server.url</name>
  24.     <value>http://master:19888/jobhistory/logs</value>
  25. </property>
  26. <!-- 设置日志保留时间为7天 -->
  27. <property>
  28.     <name>yarn.log-aggregation.retain-seconds</name>
  29.     <value>604800</value>
  30. </property>
  31. </configuration>
复制代码
mapred-site.xml

设置mapreduce资源配置

workers节点配置

设置hdfs datanode在那些节点上启动,
设置yarn 的namemanger启动。通常情况下 纯干活节点这俩进程是同时存在的。

6.jdk,hadoop发送到节点

发送安装包并加载环境变量
  1. 1. 当4,5完成后,使用scp命令把jdk,hadoop发送到hadoop01服务器中,
  2. 注意需要路径结构与master完全一致,因为很多环境变量都是按照master设置的,如果节点路径与master不一致
  3. 可能在启动服务的时候出现问题!!!
  4. 2. /etc/profile.d/my_env.sh 创建的系统变量也需要发到hadoop01中 使用source  /etc/profile.d/my_env.sh 加载环境变量
复制代码
7.启动服务

因为环境变量已经配置完 hadoop下sbin已经配置成体系路径可直接使用其中的shell脚本。
格式化NameNode

  1. 在master上执行
  2. hdfs namenode -format
复制代码


格式化成功配置的hdfs-site.xml中的namenode.name.dir出现如下文件

启动hdfs

  1. start-dfs.sh
复制代码
master上进程

hadoop01上进程

hdfs web页面访问默认端口50070,hdfs-site中可自定义
留意假如是使用本机宿主机访问页面,必要配置本机的静态域名解析文件。我用的本机操作体系是windows,配置hosts文件即可,假如在本机直接访问搭建在假造机上的hdfs,不配置hosts大概出现hdfs页面文件无法上传的情况(碰到了忘记截图了)。

上传文件

关闭hdfs

  1. stop-dfs.sh
复制代码

同样hadoop01上的服务也结束。
启动yarn

  1. start-yarn.sh
复制代码
master

hadoop01

页面访问
yarn.resourcemanager.webapp.address 默认8088

yarn.nodemanager.webapp.address 默认8042

关闭yarn

  1. stop-yarn.sh
复制代码
启动JobHistoryServer

用于检察Yarn历史服务日记
  1. mr-jobhistory-daemon.sh start historyserver
复制代码

关闭JobHistoryServer

  1. mr-jobhistory-daemon.sh stop historyserver
复制代码
8.碰到的标题

  1. 问题1:使用hdfs web页面上传数据报错 Failed to retrieve data from /webhdfs/v1/?op=LISTSTATUS: Server Error
  2. 解决方式:jdk版本过高,最没注意开始下载了jdk18,后面更换了jdk1.8解决了此问题
  3. 问题2:启动失败/namenode初始化失败
  4. 解决方式:检查一下当时使用的用户是不是部署使用的应用用户,检查部分使用的目录是不是应用用户有权限执行,因为最开始配置的datanode,namenode存储路径在opt下应用用户没权限操作导致格式化失败,更换配置到有权限的目录可以解决
  5. 问题3:启动任务后节点上的任务启动失败
  6. 解决方式:检查确认hadoop配置是否完全一致,master跟节点配置必须完全一致不然节点启动会存在问题,建议master修改后scp同步到工作节点。
  7. 问题4:设置的hdfs log路径未生效,仍在hadoop logs里面
  8. 解决方式:暂无 不确定是否正常后续确认。
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

三尺非寒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表