Hadoop 完全分布式搭建(超具体)

兜兜零元  金牌会员 | 2024-6-19 04:30:21 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 544|帖子 544|积分 1632

媒介:本文中使用的 Hadoop 版本为 hadoop-3.1.3,系统为 CentOS 7。
集群其它生态安装与设置:


  • Hive 搭建(将 MySQL 作为元数据库)
  • Spark 集群搭建(多种方式)
  • Sqoop 安装设置(超具体)
  • Hudi 0.12.0 搭建——集成 Hive3.1 与 Spark3.2
1.虚拟机安装

在学习过程中,一般环境下我们都是在本机通过安装虚拟机来完成 Hadoop 完全分布式的安装。在安装完虚拟机后,我们来设置虚拟机,安装镜像等操作。
系统安装

第一步:点击左上角文件—— 新建虚拟机
   
  选择自界说,点击下一步
选择稍后安装操作系统,点击下一步
   
  选择虚拟机的版本(我使用的是 CentOS 7),点击下一步
   
  点击下一步,设置虚拟机名称和安装位置。
   
  点击下一步,设置系统参数。请结合自身电脑的性能来举行设置(在任务管理器中的性能一栏中查看):


  • 内存:由于我们要搭建完全分布式(一台主机两台从机),所以我们将内存总容量除 4 得到的就是每台虚拟机可设置的内存容量。我的内存是 16 G,所以在这里设置为 4G。
  • 处置惩罚器:设置为和本机数量一致,不能大于。
  • 网络适配器:设置为 NAT 模式。
   
  一直点击下一步,设置虚拟机磁盘容量,根据自身的实际环境来,建议设置为 50G,避免其它应用安装不了。并不是给多少就会在当地占用多少硬盘,而是用多少占用多少。
   
  一直点击下一步,直到完成。编辑虚拟机,为其添加镜像文件
   
  点击确定,我们就可以开启虚拟机,等待安装完成。
在安装过程中需要我们对系统举行一些安装设置,首先下拉菜单将语言修改为简体中文。
点击软件选择,勾选桌面那一栏,点击完成退出。
   
  点击安装位置,选择我要设置分区
   
  点击完成,进入分区设置界面,切换成标准分区
   
  点击左下角 + 号添加分区,点击下拉列表框,选择 /boot,分配 1G 空间,点击添加,添加完成后修改文件系统为 ext4。
   
  点击左下角 + 号添加分区,点击下拉列表框,选择 swap 交换分区,分配 4G 空间。将剩余的空间全部给主目次 /。
我这里分配完成后如下所示:
   
  点击完成接受更改,保存退出。
关闭 KDUMP
   
  开启网络
   
  上述设置完成后,点击开始安装,设置 ROOT 暗码,趁便添加一个用户,等待系统安装完成。
网络设置

系统安装完成后,我们来设置虚拟机的网络,点击左上角编辑——虚拟网络编辑器
设置网络底子信息
   
  设置网关
   
  点击确定,保存退出。
设置当地网络,点击控制面板,进入网络适配器界面,选择 vm8
   
  右击,选择属性,修改 ipv4。
   
  注意:需要和虚拟机中设置的网络信息保持一致。
   
  进入到系统中,打开终端,设置为静态 ip ,添加 ip 地点、网关和域名。
  1. vi /etc/sysconfig/network-scripts/ifcfg-ens33
复制代码
  
  重启网络服务
  1. systemctl restart network
复制代码
使用 ifconfig 命令检查是否设置成功。
   
  到此为止,我们的虚拟机网络设置完成。
2.环境、免密设置

前置环境设置

1.修改主机名称为 “master” (你可以取其它的名字)与 hosts 文件,方便后续举行集群之间的映射。
  1. # 修改主机名称
  2. vi /etc/hostname
  3. # 或者
  4. hostnamectl set-hostname master
复制代码
修改 hosts 文件,提前添加映射,注意保存退出。
   
  2.关闭防火墙
  1. # 临时关闭防火墙
  2. systemctl stop firewalld
  3. # 永久关闭防火墙
  4. systemctl disable firewalld
复制代码
3.安装相关软件
  1. # 安装下载库
  2. yum install -y epel-release
复制代码
如果是最小化安装,还需安装以下工具:
  1. # net-tool:工具包集合,包含ifconfig等命令
  2. yum install -y net-tools
  3. # vim:编辑器(可选)
  4. yum install -y vim
复制代码
4.卸载原生 JDK,最小化安装的无需操作。
  1. rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
复制代码
5.关机,克隆两台虚拟机,作为从机使用。
右击创建好的虚拟机,选择管理——克隆——点击下一页,完整克隆
克隆完成后,启动两台克隆机器(注意不要同时启动,一台一台启动,不然会造成 IP 冲突,修改完 IP 后再启动其它机器)。打开终端,修改主机名称,设置为静态 ip ,添加 ip 地点、网关和域名,注意与主节点 master 中的 hosts 文件保持一致。设置完成后,重启网络,检查是否设置成功。
免密登录设置

为了后期使用方便,我们为集群机器之间设置免密登录,这里使用 Xshell 工具使用长途登录毗连操作,可以在官网免费下载 Xshell 官网,趁便也下载 Xftp 工具,方便后期传输文件和安装包。
打开 Xshell 工具,点击左上角文件——新建,在弹出框中设置名称和 ip 地点,然后点击毗连,随后输入 root 账号暗码完成毗连。
   如果毗连不上请检查你的虚拟机是否启动或者 ip 地点是否填写有误。
   
  三台机子都毗连成功之后,开始设置免密登录。我这里给出 master 主节点免密登录其它两台从机的示例,从机免密登录主机就照葫芦画瓢吧。
  1. # 生成公钥与私钥(三次回车)
  2. ssh-keygen
  3. # 向目标主机发送公钥(输入密码)
  4. ssh-copy-id slave1
  5. ssh-copy-id slave2
  6. # 也需要对自己设置免密哦
  7. ssh-copy-id master
  8. # 免密登录,输入 exit 退出登录
  9. ssh slave1
  10. ...
复制代码
为其它两台从机设置好免密登录。
集群安装规划

为了公道的分配资源,我们需要对集群举行节点规划。
masterslave1slave2HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNodeYARNNodeManagerResourceManager NodeManagerNodeManager 节点解析
名称作用NameNode也称为 nn,管理文件系统的定名空间,维护文件系统树以及整个树上所有文件和目次,负责和谐集群中的数据存储。SecondaryNameNode帮助 NameNode 缓解压力,归并编辑日志,减少 NameNode 启动时间。ResourceManager一个仲裁整个集群可用资源的主节点,帮助 YARN 系统管理其上的分布式应用。NodeManagerYARN 中单节点的署理,它管理 Hadoop 集群中单个计算节点。DataNode负责真正存储数据的节点,提供来自文件系统客户端的读写哀求。 3.安装 Hadoop 完全分布式

1.上传安装包 和 JDK1.8

我这里的 Hadoop 安装包是 hadoop-3.1.3 版本,根据自身需求来。在主节点 master 中的 /opt 目次下新建两个文件夹 module(存放数据) 和 sofeware (存放安装包)。使用 Xftp 工具将 Hadoop 安装包 和 JDK上传到 sofeware 文件夹下,便于后期管理。
   
  
2.解压文件

解压文件到 /opt/module 中。
  1. tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
  2. tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
复制代码
3.设置环境变量

  1. vi /etc/profile
  2. # 在文件末尾添加,将路径更改为你的安装路径
  3. #JAVA_HOME
  4. export JAVA_HOME=/opt/module/jdk1.8.0_212
  5. export PATH=$PATH:$JAVA_HOME/bin
  6. #HADOOP_HOME
  7. export HADOOP_HOME=/opt/module/hadoop-3.1.3
  8. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
复制代码
保存退出后实行命令 source /etc/profile
,使用设置的环境变量立即生效。
输入命令 java -version 验证 JDK 是否安装成功:

4. 设置 Hadoop-env.sh 文件

该文件位于 $HADOOP_HOME/etc/hadoop 目次下,是一个设置 Hadoop 环境变量的文件,我们只需要在此中指定 Java 安装目次即可。
  1. export JAVA_HOME=/opt/module/jdk1.8.0_212
复制代码
5. 设置 Hadoop 重要文件

在 Hadoop 中有四个重要的设置文件,位于 $HADOOP_HOME/etc/hadoop 目次下,分别是:

  • 核心设置文件 —— core-site.xml
  • HDFS 设置文件 —— hdfs-site.xml
  • YARN 设置文件 —— yarn-site.xml
  • MapReduce 设置文件 —— mapred-site.xml
根据集群规划,设置文件:


  • core-site.xml
  1. <configuration>
  2.     <!-- 指定 NameNode 的地址 -->
  3.     <property>
  4.         <name>fs.defaultFS</name>
  5.         <value>hdfs://master:8020</value>
  6.     </property>
  7.     <!-- 指定 Hadoop 数据的存储目录 -->
  8.     <property>
  9.         <name>hadoop.tmp.dir</name>
  10.         <value>/opt/module/hadoop-3.1.3/data</value>
  11.     </property>
  12.    
  13.     <!-- 配置 HDFS 网页登录使用的静态用户为 root-->
  14.     <property>
  15.         <name>hadoop.http.staticuser.user</name>
  16.         <value>root</value>
  17.     </property>
  18.    
  19.     <!-- 设置集群用户权限 -->
  20.     <property>
  21.             <name>hadoop.proxyuser.root.hosts</name>
  22.             <value>*</value>
  23.     </property>
  24.     <property>
  25.            <name>hadoop.proxyuser.root.groups</name>
  26.             <value>*</value>
  27.     </property>
  28. </configuration>
复制代码


  • hdfs-site.xml
  1. <configuration>
  2.         <!-- nn(NameNode) web 端访问地址-->
  3.         <property>
  4.         <name>dfs.namenode.http-address</name>
  5.         <value>master:9870</value>
  6.     </property>
  7.    
  8.         <!-- 2nn(SecondaryNameNode) web 端访问地址-->
  9.     <property>
  10.         <name>dfs.namenode.secondary.http-address</name>
  11.         <value>slave2:9868</value>
  12.     </property>
  13.    
  14. </configuration>
复制代码


  • yarn-site.xml
  1. <configuration>
  2.     <!-- 指定 MR 走 shuffle -->
  3.     <property>
  4.         <name>yarn.nodemanager.aux-services</name>
  5.         <value>mapreduce_shuffle</value>
  6.     </property>
  7.     <!-- 指定 ResourceManager 的地址-->
  8.     <property>
  9.         <name>yarn.resourcemanager.hostname</name>
  10.         <value>slave1</value>
  11.     </property>
  12.     <!-- 环境变量的继承 -->
  13.     <property>
  14.         <name>yarn.nodemanager.env-whitelist</name>
  15.                 <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
  16.     </property>
  17.         <!-- 开启日志聚集功能 -->
  18.         <property>
  19.             <name>yarn.log-aggregation-enable</name>
  20.             <value>true</value>
  21.         </property>
  22.        
  23.         <!-- 设置日志聚集服务器地址 -->
  24.         <property>  
  25.             <name>yarn.log.server.url</name>  
  26.             <value>http://master:19888/jobhistory/logs</value>
  27.         </property>
  28.        
  29.         <!-- 设置日志保留时间为 7 天 -->
  30.         <property>
  31.             <name>yarn.log-aggregation.retain-seconds</name>
  32.             <value>604800</value>
  33.         </property>
  34. </configuration>
复制代码


  • mapred-site.xml
  1. <configuration>
  2.         <!-- 指定 MapReduce 程序运行在 Yarn 上 -->
  3.     <property>
  4.         <name>mapreduce.framework.name</name>
  5.         <value>yarn</value>
  6.     </property>
  7.         <!-- 历史服务器端地址 -->
  8.         <property>
  9.             <name>mapreduce.jobhistory.address</name>
  10.             <value>master:10020</value>
  11.         </property>
  12.        
  13.         <!-- 历史服务器 web 端地址 -->
  14.         <property>
  15.             <name>mapreduce.jobhistory.webapp.address</name>
  16.             <value>master:19888</value>
  17.         </property>
  18. </configuration>
复制代码
6.设置 workers/slaves 文件

在 Hadoop 的 2.x 版本中 workers 文件叫 slaves。
该文件位于 $HADOOP_HOME/etc/hadoop 目次下,用于指定集群运行的所有主机。
  1. vi $HADOOP_HOME/etc/hadoop/workers
  2. # 添加你的主机
  3. master
  4. slave1
  5. slave2
复制代码
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
7.文件分发

我们上面的操作都只是在主节点 master 中举行,现在我们需要把所有文件分发给从机 slave1 和 slave2。
  1. # 分发环境变量
  2. rsync -r /etc/profile slave1:/etc/profile
  3. rsync -r /etc/profile slave2:/etc/profile
  4. # 分发 JDK 和 Hadoop
  5. scp -r /opt/module slave1:/opt
  6. scp -r /opt/module slave2:/opt
复制代码
分发完成后,进入两台从机,革新分发的环境变量,立即生效。
  1. source /etc/profile
复制代码
8.启动集群

如果集群是第一次启动,则需要先格式化 NameNode 节点。
  1. hdfs namenode -format
复制代码
格式化正确则如下所示:
   
  格式化完成后,启动集群:
  1. # 在主节点中运行
  2. start-dfs.sh
  3. # 在 ResourceManager 节点中运行
  4. start-yarn.sh
  5. # 或者
  6. # 在主节点中运行
  7. start-all.sh
  8. # 在 ResourceManager 节点中运行
  9. start-yarn.sh
  10. # 在主节点中启动历史服务器
  11. mr-jobhistory-daemon.sh start historyserver
复制代码
启动时如果发生如下错误:
   
  请在 /etc/profile 文件末尾添加如下参数
  1. export HDFS_NAMENODE_USER=root
  2. export HDFS_DATANODE_USER=root
  3. export HDFS_SECONDARYNAMENODE_USER=root
  4. export YARN_RESOURCEMANAGER_USER=root
  5. export YARN_NODEMANAGER_USER=root
复制代码
添加完成后分发到其它节点,并使其立即生效。
启动完成后,输入 jps 命令检查各节点是否正常:
master 主节点
   
  slave1 节点
   
  slave2 节点
   
  在当地欣赏器中查看 Hadoop web 界面:192.168.10.10:9870(这里请修改为你的主机IP)
   
  到此为止,我们的 Hadoop 完全分布式就已经搭建完成啦!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

兜兜零元

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

标签云

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