ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【Linux】—Hadoop运行环境搭建(完全分布式) [打印本页]

作者: 络腮胡菲菲    时间: 2024-12-20 18:15
标题: 【Linux】—Hadoop运行环境搭建(完全分布式)

前言

   本文主要讲Hadoop运行环境(完全分布式)搭建。三种完全分布式客户机如下:
  

   Hadoop运行模式有三种:当地、伪分布、完全分布模式。
  运行模式说明当地模式数据存储在linux当地伪分布模式数据存储在HDFS完全分布模式数据存储在HDFS
多台服务器工作
一、模板虚拟机环境准备

   1、安装模板虚拟机,请参考链接:https://blog.csdn.net/sodaloveer/article/details/139795882
    模板虚拟机信息:
  
    2、安装XShell远程访问机,请参考链接:https://blog.csdn.net/sodaloveer/article/details/140122338
    3、QF虚拟机设置要求如下(本文Linux体系版本以Linux version 3.10.0-957.el7.x86_64为例)
   
  

  1. 如果Linux安装的是最小系统版本,还需要安装"net-tool"工具、"vim"编辑器;如果安装的是Linux桌面标准版,可以跳过,直接执行命令安装epel-release。
复制代码
  
  

   
  

   
  

   4、关闭防火墙,关闭防火墙开机自启
  
  

   5、创建atwqf用户,并修改atwaf用户的密码
  
    6、设置atwqf用户具有root权限,方便后期加sudo执行root权限命令。
  
  

注意:atwqf 这一行不要直接放到root下面,因为所有用户都属于wheel组,你先设置了atwqf具有免密功能,但是步调执行到%wheel行时,该功能又被覆盖回需要密码,以是atwqf要入放到%wheel行下面。
   7、在/opt目录下面创建文件夹,并修改所属主和所属组。
    7.1. 在/opt目录下创建module、software文件夹。
  
    7.2. 修改module、software文件夹的所有者和所属组均为atwqf用户。
  
    7.3. 检察module、software文件夹的所有者和所属组。
  
  

   8、卸载虚拟机自带的JDK,假如你的虚拟机是最小化安装可以直接跳过这一步,不需要执行。
  
    9、重启虚拟机
  
  

二、克隆虚拟机(以hadoop102为例)

   使用模板机QF,克隆三台虚拟机:hadoop102、hadoop103、hadoop104,下面以克隆hadoop102为例。
    1、右键"管理"->“克隆”。
  



   2、选择"创建完整克隆"。
  

   3、填写克隆虚拟机的名称和存放位置。
  

   4、重复上面克隆hadoop102的步调,完成hadoop103、hadoop104的克隆。
  

   5、假如想要彻底删除克隆机,右键"管理"->“从磁盘中删除”。
右键"移除"只是页面上移除。右键"打开”,选择到对应的文件夹就可以规复了。(参考链接:如何把vmware中已经移除的虚拟机规复)
  


三、修改克隆机的IP

   1、修改克隆虚拟机的静态IP。
  
  

   2、修改克隆机主机名。
  
  

   3、设置Linux克隆机主机名称映射host文件,执行"vim /etc/hosts"命令打开/etc/hosts。添加下面内容:
  
  

   4、检察Linux虚拟机的"虚拟网络编辑器"
  
  

   
  

   
  


   5、检察Windows体系适配器 VMware Network Adapter VMnet8的IP地址。
  
  

   
  

   
  

   
  

   保证Linux体系ifcfg-ens32文件中IP地址,虚拟网络编辑器地址和Windows体系VM8网络IP地址相同。
    6、重启克隆机hadoop102,执行"reboot"命令。
  

   7、修改Windows的主机映射文件(hosts文件),进入"C:\Windows\System32\drivers"路径hosts,添加如下内容:(提示:操作体系是Windows10,先拷贝出来,修改保存以后,再覆盖即可。)
    192.168.40.100 qf
192.168.40.101 hadoop101
192.168.40.102 hadoop102
192.168.40.103 hadoop103
192.168.40.104 hadoop104
  

四、安装JDK

以hadoop102为例。先安装到hadoop102上,再拷贝到hadoop103、hadoop104上。
   0、jdk下载地址:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html,下滑找恰当项目标jdk版本,只管下载.tar.gz后缀的方便安装。
    1、卸载现有jdk,在进行安装jdk前,肯定要确保提前删除了虚拟机自带的jdk。
  
  

   2、用XShell传输工具Xftp将JDK导入到/opt/software/文件夹下面。
  

   3、在Linux体系下的opt目录中检察软件包是否导入乐成。
  
  

   4、解压JDK到/opt/module目录下。
  
  

   5、检察是否解压乐成。
  

   6、设置JDK环境变量。
  
  

   7、测试JDK是否安装乐成。
  
  

五、安装Hadoop(完全分布式)

以hadoop102为例,再拷贝到hadoop103、hadoop104上。
   0、hadoop-3.1.3下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/
    1、用XShell传输工具Xftp将hadoop-3.1.3.tar.gz导入到/opt/software/文件夹下面。
  

   2、在Linux体系下的opt目录中检察软件包是否导入乐成。
  
  

   3、解压hadoop-3.1.3.tar.gz到/opt/module目录下。
  
  

   4、检察是否解压乐成。
  

   5、设置Hadoop添加到环境变量。
  
  

   6、测试是否安装乐成。
  
  

   7、检察Hadoop目录布局。
  
  

   重要目录说明:
  
  六、集群常用命令

   1、根据上面的安装步调,如今只有hadoop102这台客户机上安装好jdk和hadoop,因此通过scp命令将hadoop102安装乐成的jdk和hadoop拷贝到hadoop103、hadoop104服务器上。如下图:
  

  1. 命令:scp
  2. 功能:安全拷贝,可以实现服务器与服务器之间的数据拷贝。
  3. 语法:
  4. scp -r     $pdir/$fname        $user@$host:$pdir/$fname
  5. scp -r   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称
复制代码
  在 hadoop102、hadoop103、hadoop104 都已经创建好的/opt/module、 /opt/software 两个目录,而且已经把这两个目录修改为 atwqf:atwqf。
  

   在hadoop102上,
执行"scp -r /opt/module/jdk1.8.0_212 atwqf@hadoop103:/opt/module"命令,将hadoop102中/opt/module/jdk1.8.0_212 目录拷贝到hadoop103 上,
执行"scp -r /opt/module/jdk1.8.0_212 atwqf@hadoop104:/opt/module"命令,将hadoop102中/opt/module/jdk1.8.0_212 目录拷贝到hadoop104 上。
  

   在hadoop102上,
执行"scp -r /opt/module/hadoop-3.1.3 atwqf@hadoop103:/opt/module"命令,将hadoop102中/opt/module/hadoop-3.1.3 目录拷贝到hadoop103 上,
执行"scp -r /opt/module/jdk1.8.0_212 atwqf@hadoop104:/opt/module"命令,将hadoop102中/opt/module/jdk1.8.0_212 目录拷贝到hadoop104 上。
  

   另一种方式,也可以在hadoop103上,
执行"scp -r atwqf@hadoop102:/opt/module/hadoop-3.1.3 atwqf@hadoop104:/opt/module"命令、
执行"scp -r atwqf@hadoop102:/opt/module/jdk1.8.0_212 atwqf@hadoop104:/opt/module"命令,
可以将hadoop102的jdk和hadoop拷贝到hadoop104上。
  1. 命令:rsync
  2. 功能:远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
  3. 语法:
  4. rsync -av     $pdir/$fname        $user@$host:$pdir/$fname
  5. rsync -av   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名
  6. rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
复制代码
  2、集群分发脚本:先在hadoop102客户机上摆设好xsync脚本,命令可以任何路径下都可以使用。执行这个命令同时分发到hadoop103、hadoop104。
  1. 命令:xsync
  2. 功能:循环复制文件到所有节点的相同目录下。
  3. 语法:xsync 要同步的文件名称
复制代码
  
  1. #!/bin/bash
  2. #1. 判断参数个数
  3. if [ $# -lt 1 ]
  4. then
  5. echo Not Enough Arguement!
  6. exit;
  7. fi
  8. #2. 遍历集群所有机器
  9. for host in hadoop102 hadoop103 hadoop104
  10. do
  11. echo ==================== $host ====================
  12. #3. 遍历所有目录,挨个发送
  13. for file in $@
  14. do
  15. #4. 判断文件是否存在
  16. if [ -e $file ]
  17. then
  18. #5. 获取父目录
  19. pdir=$(cd -P $(dirname $file); pwd)
  20. #6. 获取当前文件的名称
  21. fname=$(basename $file)
  22. ssh $host "mkdir -p $pdir"
  23. rsync -av $pdir/$fname $host:$pdir
  24. else
  25. echo $file does not exists!
  26. fi
  27. done
  28. done
复制代码
  
  


   
  

   
  

   
  

   
   
  

   
  


   
  

   
  


   3、设置ssh,无密登录。
  1. 命令:ssh
  2. 功能:无密登录别的服务器。
  3. 语法:ssh 另一台电脑的IP地址
复制代码
  服务器间使用ssh免密登录的过程:
  

   
  


   
   
  

   
  

   
  


目录名说明known_hosts记载 ssh 访问过盘算机的公钥(public key)id_rsa生成的私钥id_rsa.pub生成的公钥authorized_keys存放授权过的无密码登录服务器公钥

   
  

   
  

   设置ssh免密登录后,xsync分发脚本可以不用输密码了。
    注意: ssh设置是在atwqf用户下进行设置的,以是在root用户下是无效的,要重新根据上面流程设置。
  七、设置集群

   1、集群摆设规划
  
hadoop102hadoop103hadoop104HDFSNameNode
DataNodeDataNodeSecondaryNameNode
DataNodeYARNNodeManagerResourceManager
NodeManagerNodeManager   2、设置文件
  
要获取的默认文件文件存放在Hadoop的jar包中的位置[core-default.xml]hadoop-common-3.1.3.jar/core-default.xml[hdfs-default.xml]hadoop-hdfs-3.1.3.jar/hdfs-default.xml[yarn-default.xml]hadoop-yarn-common-3.1.3.jar/yarn-default.xml[mapred-default.xml]hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml
   焦点设置文件:core-site.xml
  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <configuration>
  4. <!-- 指定 NameNode 的地址 -->
  5. <property>
  6. <name>fs.defaultFS</name>
  7. <value>hdfs://hadoop102:8020</value>
  8. </property>
  9. <!-- 指定 hadoop 数据的存储目录 -->
  10. <property>
  11. <name>hadoop.tmp.dir</name>
  12. <value>/opt/module/hadoop-3.1.3/data</value>
  13. </property>
  14. <!-- 配置 HDFS 网页登录使用的静态用户为 atwqf -->
  15. <property>
  16. <name>hadoop.http.staticuser.user</name>
  17. <value>atwqf</value>
  18. </property>
  19. <property>
  20. <name>hadoop.proxyuser.atwqf.hosts</name>
  21. <value>*</value>
  22. </property>
  23. <property>   
  24. <name>hadoop.proxyuser.atwqf.groups</name>
  25. <value>*</value>
  26. </property>
  27. </configuration>
复制代码
  HDFS 设置文件:hdfs-site.xml
  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <configuration>
  4. <!-- nn web 端访问地址-->
  5. <property>
  6. <name>dfs.namenode.http-address</name>
  7. <value>hadoop102:9870</value>
  8. </property>
  9. <!-- 2nn web 端访问地址-->
  10. <property>
  11. <name>dfs.namenode.secondary.http-address</name>
  12. <value>hadoop104:9868</value>
  13. </property>
  14. </configuration>
复制代码
  YARN 设置文件:yarn-site.xml
  
  1. <?xml version="1.0"?>
  2. <configuration>
  3. <!-- 指定 MR 走 shuffle -->
  4. <property>
  5. <name>yarn.nodemanager.aux-services</name>
  6. <value>mapreduce_shuffle</value>
  7. </property>
  8. <!-- 指定 ResourceManager 的地址-->
  9. <property>
  10. <name>yarn.resourcemanager.hostname</name>
  11. <value>hadoop103</value>
  12. </property>
  13. <!-- 环境变量的继承 -->
  14. <property>
  15. <name>yarn.nodemanager.env-whitelist</name>
  16. <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
  17. RED_HOME</value>
  18. </property>
  19. </configuration>
复制代码
  MapReduce 设置文件: mapred-site.xml
  
  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <configuration>
  4. <!-- 指定 MapReduce 程序运行在 Yarn 上 -->
  5. <property>
  6. <name>mapreduce.framework.name</name>
  7. <value>yarn</value>
  8. </property>
  9. <property>
  10.   <name>yarn.app.mapreduce.am.env</name>
  11.   <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
  12. </property>
  13. <property>
  14.   <name>mapreduce.map.env</name>
  15.   <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
  16. </property>
  17. </configuration>
复制代码
  3、在hadoop102上,分发设置好的Hadoop设置文件到hadoop103、hadoop104上。
  
  

   
  


   4、设置workers
  
  

   
  

   
  


八、群起并测试集群


   0、假如集群是第一次启动,需要在hadoop102节点初始化NameNode。
  
    初始化完成后,"/opt/module/hadoop-3.1.3"路径下多了logs和data。
  


   1、在hadoop102上启动hdfs,"/opt/module/hadoop-3.1.3”路径下,执行"sbin/start-dfs.sh"命令。
  

   hadoop102
  

   hadoop103
  

   hadoop104
  

      Web端检察HDFS的NameNode。
   
   



   2、在hadoop103上启动YARN,"/opt/module/hadoop-3.1.3”路径下执行"sbin/start-yarn.sh"命令。
  

   hadoop103
  

   hadoop102
  

   hadoop104
  

      Web端检察YARN的ResourceManager。
   
   


   1、上传文件
  
  


   
  




   
  



   2、上传文件后检察文件存放在什么位置
  
  

   
  

   3、拼接
  
  




   4、hadoop具有高可用性,任何一个服务器挂了之后,还有2份副本帮忙存储。
在"http://hadoop102:9870"网页上可以看到"jdk-8u212-linux-x64.tar.gz"文件有3份副本。
  

   hadoop102
  

   hadoop103
  

   hadoop104
  

   5、执行wordcount 步调。
  
  

   步调执行完成后,可以来到HDFS检察效果。
  



   执行任务时可以在yarn上看到步调运行的进程。
  


   点击history,出现下面的页面,希望看到运行的汗青状态,需要设置汗青服务器
  

九、设置汗青服务器

   为了检察步调的汗青运行情况,需要设置一下汗青服务器,具体设置步调如下:
    1、设置mapred-site.xml,执行"vim mapred-site.xml"命令,打开文件添加如下设置:
  1. <!-- 历史服务器端地址 -->
  2. <property>
  3. <name>mapreduce.jobhistory.address</name>
  4. <value>hadoop102:10020</value>
  5. </property>
  6. <!-- 历史服务器 web 端地址 -->
  7. <property>
  8. <name>mapreduce.jobhistory.webapp.address</name>
  9. <value>hadoop102:19888</value>
  10. </property>
复制代码
  2、分发设置到hadoop103、hadoop104上。
  
  

   3、先执行"jps"命令,检察yarn启动了没有,
假如没有启动的话,就先在hadoop103上,执行"sbin/start-yarn.sh"命令启动,
在hadoop102上,执行"mapred --daemon start historyserver"命令,启动汗青服务器。
  



   4、检察汗青服务器是否启动。
  
  

   5、设置完后,测试。
  
  


点击history,出现下面的页面:

   点击logs,出现下面的页面,希望检察具体的日志信息,方便出现bug时间可以定位到具体错误,因此需要设置日志的聚集显示。
  

十、设置日志的聚集

   为了检察步调的运行日志,需要设置一下日志聚集,具体设置步调如下:
    1、设置yarn-site.xml,执行"vim yarn-site.xml"命令打开文件到场如下设置:
  1. <!-- 开启日志聚集功能 -->
  2. <property>
  3. <name>yarn.log-aggregation-enable</name>
  4. <value>true</value>
  5. </property>
  6. <!-- 设置日志聚集服务器地址 -->
  7. <property>
  8. <name>yarn.log.server.url</name>
  9. <value>http://hadoop102:19888/jobhistory/logs</value>
  10. </property>
  11. <!-- 设置日志保留时间为 7 天 -->
  12. <property>
  13. <name>yarn.log-aggregation.retain-seconds</name>
  14. <value>604800</value>
  15. </property>
复制代码

   2、分发设置到hadoop103、hadoop104。
  
  

   3、因为更改了yarn设置,以是需要关闭重启。
  
  

   
  

   
  

   
  

   4、设置完后,测试。
  
  



十一、集群启动/制止方式总结


   1、在hadoop102的$HADOOP_HOME路径下,执行 “sbin/start-dfs.sh” / “sbin/stop-dfs.sh” 命令,整体启动/制止HDFS。
2、在hadoop103的$HADOOP_HOME路径下,执行 “sbin/start-yarn.sh” / “sbin/stop-yarn.sh” 命令,整体启动/制止YARN。
  





   1、在hadoop102的$HADOOP_HOME路径下,执行"bin/hdfs --daemon start/stop namenode/datanode/secondarynamenode"命令,分别启动/制止HDFS组件。
2、在hadoop103的$HADOOP_HOME路径下,执行"bin/yarn --daemon start/stop resourcemanager/nodemanager"命令,启动/制止YARN。
  


注意: 根据每个集群摆设规划在对应的服务器执行启动或者制止命令。

   1、执行"cd /home/atwqf/bin"命令。
2、执行"vim myhadoop.sh"命令,写入如下内容:
  1. #!/bin/bash
  2. if [ $# -lt 1 ]
  3. then
  4. echo "No Args Input..."
  5. exit ;
  6. fi
  7. case $1 in
  8. "start")
  9. echo " =================== 启动 hadoop 集群 ==================="
  10. echo " --------------- 启动 hdfs ---------------"
  11. ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
  12. echo " --------------- 启动 yarn ---------------"
  13. ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
  14. echo " --------------- 启动 historyserver ---------------"
  15. ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start
  16. historyserver"
  17. ;;
  18. "stop")
  19. echo " =================== 关闭 hadoop 集群 ==================="
  20. echo " --------------- 关闭 historyserver ---------------"
  21. ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop
  22. historyserver"
  23. echo " --------------- 关闭 yarn ---------------"
  24. ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
  25. echo " --------------- 关闭 hdfs ---------------"
  26. ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
  27. ;;
  28. *)
  29. echo "Input Args Error..."
  30. ;;
  31. esac
复制代码
  3、保存退却出,然后执行"chmod +x myhadoop.sh"命令,赋予脚本执行权限。
  

   4、分发脚本到hadoop103、hadoop104服务器上,保证自定义脚本在三台服务器上都可以使用。
  
  

   hadoop103
  

   hadoop104
  

   5、设置完后,测试。
  
  




十二、其他常用脚本


   1、执行"cd /home/atwqf/bin"命令。
2、执行"vim jpsall"命令,写入如下内容:
  1. #!/bin/bash
  2. for host in hadoop102 hadoop103 hadoop104
  3. do
  4. echo =============== $host ===============
  5. ssh $host jps
  6. done
复制代码
  3、 保存退却出,然后执行"chmod +x jpsall"命令,赋予脚本执行权限。
  

   4、分发脚本到hadoop103、hadoop104服务器上,保证自定义脚本在三台服务器上都可以使用。
  
  

   hadoop103
  

   hadoop104
  

   5、设置完后,测试。
  
  十三、集群时间同步

   集群时间同步:找一个呆板,作为时间服务器,所有的呆板与这台集群时间进行定时的同步。以hadoop102为时间服务器,hadoop103、hadoop104跟它对齐。
  
   1、在hadoop102上,检察所有节点ntpd服务状态和开机自启动状态。
  
  

   2、在hadoop102上,执行" sudo vim /etc/ntp.conf " 命令打开hadoop102的ntp.conf的设置文件,根据下面三点进行修改。
  
  


   4、在hadoop102 的/etc/sysconfig/ntpd 文件添加"SYNC_HWCLOCK=yes",让硬件时间与体系时间一起同步。
  
  

   5、重新启动 ntpd 服务
  
  

   6、设置 ntpd 服务开机启动
  
  

   7、其他呆板设置(hadoop103、hadoop104)
  
    hadoop103
  

   hadoop104
  

   
    hadoop103、hadoop104上
  

   
   
    生产环境:假如服务器能连接外网,不需要时间同步,浪费集群性能;假如服务器连接不了外网,需要时间同步。

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




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4