前言
本文主要讲Hadoop运行环境(完全分布式)搭建。三种完全分布式客户机如下:
Hadoop运行模式有三种:当地、伪分布、完全分布模式。
运行模式说明当地模式数据存储在linux当地伪分布模式数据存储在HDFS完全分布模式数据存储在HDFS
多台服务器工作 一、模板虚拟机环境准备
1、安装模板虚拟机,请参考链接:https://blog.csdn.net/sodaloveer/article/details/139795882
模板虚拟机信息:
- IP地址:192.168.10.100
- 主机名称:QF
- 内存:2G
- 硬盘:80G
2、安装XShell远程访问机,请参考链接:https://blog.csdn.net/sodaloveer/article/details/140122338
3、QF虚拟机设置要求如下(本文Linux体系版本以Linux version 3.10.0-957.el7.x86_64为例)
- 使用 yum 安装前,先执行"ping www.baidu.com"命令测试下虚拟机联网情况。
- 如果Linux安装的是最小系统版本,还需要安装"net-tool"工具、"vim"编辑器;如果安装的是Linux桌面标准版,可以跳过,直接执行命令安装epel-release。
复制代码
- 安装 net-tool 工具,执行"yum install -y net-tools "命令。
net-tool:工具包集合,包含ifconfig等命令。
- 安装 vim 编辑器,执行"yum install -y vim"命令。
- 安装 epel-release ,执行"yum install -y epel-release"命令。
4、关闭防火墙,关闭防火墙开机自启
- 执行"systemctl stop firewalld"命令。
- 执行"systemctl disable firewalld.service"命令。
5、创建atwqf用户,并修改atwaf用户的密码
- 执行"useradd atwqf"命令。
- 执行"passwd w574520."命令。
6、设置atwqf用户具有root权限,方便后期加sudo执行root权限命令。
- 执行"vim /etc/sudoers"命令,打开文件。
修改/etc/sudoers文件,在%wheel这行下面添加一行:
atwqf ALL=(ALL) NOPASSWD:ALL
注意:atwqf 这一行不要直接放到root下面,因为所有用户都属于wheel组,你先设置了atwqf具有免密功能,但是步调执行到%wheel行时,该功能又被覆盖回需要密码,以是atwqf要入放到%wheel行下面。
7、在/opt目录下面创建文件夹,并修改所属主和所属组。
7.1. 在/opt目录下创建module、software文件夹。
- 执行"mkdir /opt/module"命令。
- 执行"mkdir /opt/software"命令。
7.2. 修改module、software文件夹的所有者和所属组均为atwqf用户。
- 执行"mkdir atwqf:atwqf /opt/module"命令。
- 执行"mkdir atwqf:atwqf /opt/software"命令。
7.3. 检察module、software文件夹的所有者和所属组。
- 执行"cd /opt/"命令。
- 执行"ll"命令。
8、卸载虚拟机自带的JDK,假如你的虚拟机是最小化安装可以直接跳过这一步,不需要执行。
- 执行"rmp -qa | grep -i java | xargs -nl rpm -e --nodes"命令。
9、重启虚拟机
二、克隆虚拟机(以hadoop102为例)
使用模板机QF,克隆三台虚拟机:hadoop102、hadoop103、hadoop104,下面以克隆hadoop102为例。
1、右键"管理"->“克隆”。
2、选择"创建完整克隆"。
3、填写克隆虚拟机的名称和存放位置。
4、重复上面克隆hadoop102的步调,完成hadoop103、hadoop104的克隆。
5、假如想要彻底删除克隆机,右键"管理"->“从磁盘中删除”。
右键"移除"只是页面上移除。右键"打开”,选择到对应的文件夹就可以规复了。(参考链接:如何把vmware中已经移除的虚拟机规复)
三、修改克隆机的IP
1、修改克隆虚拟机的静态IP。
- 执行"vim /etc/sysconfig/network-scripts/ifcfg-ens32"命令。
主要是将IPADDR从"192.168.40.100"改成"192.168.40.102"(以hadoop102为例),同理,在hadoop103克隆机上要改成"192.168.40.103",在hadoop104克隆机密改成"192.168.40.104"。
2、修改克隆机主机名。
- 执行"vim /etc/hostname"命令。
将"QF"改成"hadoop102"(以hadoop102为例),同理,在hadoop103克隆机上要改成"hadoop103",在hadoop104克隆机上要改成"hadoop104"。
3、设置Linux克隆机主机名称映射host文件,执行"vim /etc/hosts"命令打开/etc/hosts。添加下面内容:
- 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
4、检察Linux虚拟机的"虚拟网络编辑器"
- 点击"编辑"->“虚拟网络编辑器”->“VMnet8”。
- 点击"VMnet8",设置"子网IP",点击 “NAT 设置” 进入设置 “网关IP”。
5、检察Windows体系适配器 VMware Network Adapter VMnet8的IP地址。
- “设置”->“网络和Internet”->“更改适配器选项”
- 右键"VMware Network Adapter VMnet8"->“属性”
- "Internet 协议版本4(TPC/IPv4)"的属性
保证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。
- 执行”rpm -qa|grep java"命令,检察旧JDK,假如有执行"sudo yum -y remove 要删除jdk的名字"。
2、用XShell传输工具Xftp将JDK导入到/opt/software/文件夹下面。
3、在Linux体系下的opt目录中检察软件包是否导入乐成。
4、解压JDK到/opt/module目录下。
- 执行"tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/"命令。
5、检察是否解压乐成。
6、设置JDK环境变量。
- 执行"vim /etc/profile.d/my_env.sh"命令新建文件,添加下面内容:
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH JAVA_HOME/bin
- 执行"source /etc/profile"文件,让新的环境变量PATH生效。
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目录下。
- 执行"tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/"命令。
4、检察是否解压乐成。
5、设置Hadoop添加到环境变量。
- 获取Hadoop安装路径"/opt/module/hadoop-3.1.3"。
- 执行"vim /etc/profile.d/my_env.sh"命令新建文件,添加下面内容:
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH HADOOP_HOME/bin
export PATH=$PATH HADOOP_HOME/sbin
- 执行"source /etc/profile"命令,让新的环境变量PATH生效。
6、测试是否安装乐成。
7、检察Hadoop目录布局。
重要目录说明:
- bin目录:存放对 Hadoop 相关服务(hdfs,yarn,mapred)进行操作的脚本
- etc目录:Hadoop 的设置文件目录,存放 Hadoop 的设置文件
- lib目录:存放 Hadoop 的当地库(对数据进行压缩解压缩功能)
- sbin目录:存放启动或制止 Hadoop 相关服务的脚本
- share目录:存放 Hadoop 的依赖 jar 包、文档、和官方案例
六、集群常用命令
1、根据上面的安装步调,如今只有hadoop102这台客户机上安装好jdk和hadoop,因此通过scp命令将hadoop102安装乐成的jdk和hadoop拷贝到hadoop103、hadoop104服务器上。如下图:
- 命令:scp
- 功能:安全拷贝,可以实现服务器与服务器之间的数据拷贝。
- 语法:
- scp -r $pdir/$fname $user@$host:$pdir/$fname
- 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上。
- 命令:rsync
- 功能:远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
- 语法:
- rsync -av $pdir/$fname $user@$host:$pdir/$fname
- rsync -av 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名
- rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
复制代码 2、集群分发脚本:先在hadoop102客户机上摆设好xsync脚本,命令可以任何路径下都可以使用。执行这个命令同时分发到hadoop103、hadoop104。
- 命令:xsync
- 功能:循环复制文件到所有节点的相同目录下。
- 语法:xsync 要同步的文件名称
复制代码
- 2.1. xsync脚本。
执行"vim /home/atwqf/bin/xsync"命令,在/home/atwqf/bin目录下创建xsync文件。
- #!/bin/bash
- #1. 判断参数个数
- if [ $# -lt 1 ]
- then
- echo Not Enough Arguement!
- exit;
- fi
- #2. 遍历集群所有机器
- for host in hadoop102 hadoop103 hadoop104
- 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
复制代码
- 2.2. 修改脚本xsync具有执行权限。
执行"chmod +x xsync"命令。
执行"ll"命令,可以看到颜色变了。
- 2.3. 将bin目录下的内容分发到hadoop103、hadoop104上。
执行"xsync /home/atwqf/bin/"命令。
- 在hadoop103上可以想看到xsync命令已经传送已往。
- 在hadoop104上可以想看到xsync命令已经传送已往。
- 2.4. 分发环境变量设置到hadoop103、hadoop104上。
执行"xsync /etc/profile.d/my_env.sh"命令(root所有者)。
- 在atwqf用户下,执行"xsync /etc/profile.d/my_env.sh"命令会报错failed: Permission denied。
- 在atwqf用户,下执行"sudo xsync /etc/profile.d/my_env.sh"命令会报错sudo: xsync: command not found。
原因:使用sudo相当于如今在root用户下,如今 xsync 命令是在/home/atwqf/bin路径下,root用户找不到这个路径,因此会报错,以是在atwqf用户下执行"sudo /home/atwqf/bin/xsync /etc/profile.d/my_env.sh"命令才可以(写清楚xsync命令存放的路径。)
- 2.5. 在hadoop103、hadoop104上,执行"cat /etc/profile.d/my_env.sh"命令检察是否分发乐成。
- 2.6. 在hadoop103、hadoop104服务器上,执行"source /etc/profile"命令,让其的环境变量生效。
3、设置ssh,无密登录。
- 命令:ssh
- 功能:无密登录别的服务器。
- 语法:ssh 另一台电脑的IP地址
复制代码 服务器间使用ssh免密登录的过程:
- 3.1. 要实现hadoop102服务器上可以免密登录hadoop103、hadoop104。
在hadoop102上,执行"ssh-keygen -t rsa"命令,生成公钥和私钥。
- 3.2. 将公钥拷贝到要免密登录的hadoop103、hadoop104服务器上。
在hadoop102上,执行"ssh-copy-id hadoop102"将公钥拷贝到要免密登录的本身身上。
在hadoop102上,执行"ssh-copy-id hadoop103"将公钥拷贝到要免密登录的hadoop103上。
在hadoop102上,执行"ssh-copy-id hadoop104"将公钥拷贝到要免密登录的hadoop104上。
同理,假如想在hadoop103对hadoop102/hadoop104服务器进行免密登录的话,在hadoop103服务器上执行上述语句。
- 3.3. 执行完成3.2.后,在hadoop102上,可以无密登录hadoop103。
执行"ssh hadoop103"命令。
- 3.5. 在/home/atwqf路径下,检察该路径下所有的文件,包罗隐蔽文件。
执行"ls -al"命令。
目录名说明known_hosts记载 ssh 访问过盘算机的公钥(public key)id_rsa生成的私钥id_rsa.pub生成的公钥authorized_keys存放授权过的无密码登录服务器公钥
- 3.6. 检察曾经访问过的hadoop102的服务器。
执行"cat known_hosts"命令。
- 3.7. 检察答应哪些服务器来免密登录我本身。
执行"cat authorized_keys"命令。
设置ssh免密登录后,xsync分发脚本可以不用输密码了。
注意: ssh设置是在atwqf用户下进行设置的,以是在root用户下是无效的,要重新根据上面流程设置。
七、设置集群
1、集群摆设规划
- NameNode 、ResourceManager、SecondaryNameNode 不要安装在同一台服务器。
hadoop102hadoop103hadoop104HDFSNameNode
DataNodeDataNodeSecondaryNameNode
DataNodeYARNNodeManagerResourceManager
NodeManagerNodeManager 2、设置文件
- 设置文件说明:Hadoop设置文件分两类:默认设置文件和自定义设置文件,只有用户想修改某一默认设置值时,才需要修改自定义设置文件,更改相应属性值。
要获取的默认文件文件存放在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、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个设置文件存放在
$HADOOP_HOME/etc/hadoop 这个路径上,用户可以根据项目需求重新进行修改设置。
焦点设置文件:core-site.xml
- 1、执行"cd $HADOOP_HOME/etc/hadoop"命令,来到存放焦点设置文件的。
- 2、执行"vim 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://hadoop102:8020</value>
- </property>
- <!-- 指定 hadoop 数据的存储目录 -->
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/opt/module/hadoop-3.1.3/data</value>
- </property>
- <!-- 配置 HDFS 网页登录使用的静态用户为 atwqf -->
- <property>
- <name>hadoop.http.staticuser.user</name>
- <value>atwqf</value>
- </property>
- <property>
- <name>hadoop.proxyuser.atwqf.hosts</name>
- <value>*</value>
- </property>
- <property>
- <name>hadoop.proxyuser.atwqf.groups</name>
- <value>*</value>
- </property>
- </configuration>
复制代码 HDFS 设置文件:hdfs-site.xml
- 1、执行"cd $HADOOP_HOME/etc/hadoop"命令来到存放HDFS 设置文件的。
- 2、执行"vim 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>hadoop102:9870</value>
- </property>
- <!-- 2nn web 端访问地址-->
- <property>
- <name>dfs.namenode.secondary.http-address</name>
- <value>hadoop104:9868</value>
- </property>
- </configuration>
复制代码 YARN 设置文件:yarn-site.xml
- 1、执行"cd $HADOOP_HOME/etc/hadoop"命令来到存放YARN 设置文件的。
- 2、执行"vim yarn-site.xml"命令,写入以下内容:
- <?xml version="1.0"?>
- <configuration>
- <!-- 指定 MR 走 shuffle -->
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <!-- 指定 ResourceManager 的地址-->
- <property>
- <name>yarn.resourcemanager.hostname</name>
- <value>hadoop103</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_MAP
- RED_HOME</value>
- </property>
- </configuration>
复制代码 MapReduce 设置文件: mapred-site.xml
- 1、执行"cd $HADOOP_HOME/etc/hadoop"命令来到存放MapReduce 设置文件的。
- 2、执行"vim mapred-site.xml"命令,写入以下内容:
- <?xml version="1.0"?>
- <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
- <configuration>
- <!-- 指定 MapReduce 程序运行在 Yarn 上 -->
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- <property>
- <name>yarn.app.mapreduce.am.env</name>
- <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
- </property>
- <property>
- <name>mapreduce.map.env</name>
- <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
- </property>
- </configuration>
复制代码 3、在hadoop102上,分发设置好的Hadoop设置文件到hadoop103、hadoop104上。
- 执行"xsync /opt/module/hadoop-3.1.3/etc/hadoop"命令。
- 在hadoop103和hadoop104上检察文件分发情况。
4、设置workers
- 4.1. 执行"vim /opt/module/hadoop-3.1.3/etc/hadoop/workers"命令,增加下面内容:
hadoop102
hadoop103
hadoop104
注意:该文件中添加的内容末端不答应有空格,文件中不答应有空行。
- 4.2. 在hadoop102上,分发设置好的workers设置文件到hadoop103、hadoop104上。
执行"xsync /opt/module/hadoop-3.1.3/etc"命令。
- 4.3. 在hadoop103和hadoop104上检察workers设置文件分发情况。
八、群起并测试集群
0、假如集群是第一次启动,需要在hadoop102节点初始化NameNode。
- 执行”hdfs namenode -format"命令。
初始化完成后,"/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。
- 1、浏览器中输入:http://hadoop102:9870
- 2、检察HDFS上存储的数据信息
2、在hadoop103上启动YARN,"/opt/module/hadoop-3.1.3”路径下执行"sbin/start-yarn.sh"命令。
hadoop103
hadoop102
hadoop104
Web端检察YARN的ResourceManager。
- 1、浏览器中输入:http://hadoop103:8088
- 2、检察YARN上存储的Job信息(有任务运行的时间才有显示)
1、上传文件
- 创建文件夹
执行"hadoop fs -mkdir /wcinput"命令,在HDFS的NameNode下新建文件夹wcinput。
- 上传小文件
执行"hadoop fs -put wcinput/word.txt /wcinput"命令,将/opt/module/hadoop-3.1.3/wcinput/word.txt文件上传到HDFS的NameNode下新建文件夹wcinput下。
- 上传大文件
执行"hadoop fs -put /opt/software/jdk-8u212-linux-x64.tar.gz /"命令。
2、上传文件后检察文件存放在什么位置
- 检察 HDFS 文件存储路径
执行"/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-171723331-192.168.40.102-1627085800814/current/finalized/subdir0/subdir18"命令。
- 检察 HDFS 在磁盘存储文件内
执行"cat blk_1073754824"命令 。
3、拼接
- 执行"cat blk_1073754825 >> tmp.tar.gz"命令。
- 执行"cat blk_1073754826 >> tmp.tar.gz"命令。
- 执行"tar -zxvf tmp.tar.gz"命令解压到当前路径,就是一个jdk1.8.0_212。
4、hadoop具有高可用性,任何一个服务器挂了之后,还有2份副本帮忙存储。
在"http://hadoop102:9870"网页上可以看到"jdk-8u212-linux-x64.tar.gz"文件有3份副本。
hadoop102
hadoop103
hadoop104
5、执行wordcount 步调。
- 执行"hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /output"命令。注意:输入、输出路径也要是集群的路径。
步调执行完成后,可以来到HDFS检察效果。
执行任务时可以在yarn上看到步调运行的进程。
点击history,出现下面的页面,希望看到运行的汗青状态,需要设置汗青服务器。
九、设置汗青服务器
为了检察步调的汗青运行情况,需要设置一下汗青服务器,具体设置步调如下:
1、设置mapred-site.xml,执行"vim mapred-site.xml"命令,打开文件添加如下设置:
- <!-- 历史服务器端地址 -->
- <property>
- <name>mapreduce.jobhistory.address</name>
- <value>hadoop102:10020</value>
- </property>
- <!-- 历史服务器 web 端地址 -->
- <property>
- <name>mapreduce.jobhistory.webapp.address</name>
- <value>hadoop102:19888</value>
- </property>
复制代码 2、分发设置到hadoop103、hadoop104上。
- 执行"xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml"命令。
3、先执行"jps"命令,检察yarn启动了没有,
假如没有启动的话,就先在hadoop103上,执行"sbin/start-yarn.sh"命令启动,
在hadoop102上,执行"mapred --daemon start historyserver"命令,启动汗青服务器。
4、检察汗青服务器是否启动。
5、设置完后,测试。
- 执行"hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput"命令。
点击history,出现下面的页面:
点击logs,出现下面的页面,希望检察具体的日志信息,方便出现bug时间可以定位到具体错误,因此需要设置日志的聚集显示。
十、设置日志的聚集
为了检察步调的运行日志,需要设置一下日志聚集,具体设置步调如下:
1、设置yarn-site.xml,执行"vim yarn-site.xml"命令打开文件到场如下设置:
- <!-- 开启日志聚集功能 -->
- <property>
- <name>yarn.log-aggregation-enable</name>
- <value>true</value>
- </property>
- <!-- 设置日志聚集服务器地址 -->
- <property>
- <name>yarn.log.server.url</name>
- <value>http://hadoop102:19888/jobhistory/logs</value>
- </property>
- <!-- 设置日志保留时间为 7 天 -->
- <property>
- <name>yarn.log-aggregation.retain-seconds</name>
- <value>604800</value>
- </property>
复制代码
2、分发设置到hadoop103、hadoop104。
- 执行"xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml"命令。
3、因为更改了yarn设置,以是需要关闭重启。
- 在hadoop102上,执行"mapred --daemon stop historyserver"命令关闭HistoryServer。
- 在hadoop103上,执行"sbin/stop-yarn.sh"命令,关闭 NodeManager、ResourceManager。
- 在hadoop103上,执行"sbin/start-yarn.sh"命令,启动 NodeManager、ResourceManager。
- 在hadoop102上,执行"mapred --daemon start historyserver"命令开启HistoryServer。
4、设置完后,测试。
- 在$HADOOP_HOME路径下,执行"hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput1"。
十一、集群启动/制止方式总结
- 方法一:各个模块分开启动/制止(前提是设置ssh)
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。
注意: 根据每个集群摆设规划在对应的服务器执行启动或者制止命令。
- 方法三:Hadoop集群启停脚本(包含HDFS,Yarn,Historyserver):myhadoop.sh
1、执行"cd /home/atwqf/bin"命令。
2、执行"vim myhadoop.sh"命令,写入如下内容:
- #!/bin/bash
- if [ $# -lt 1 ]
- then
- echo "No Args Input..."
- exit ;
- fi
- case $1 in
- "start")
- echo " =================== 启动 hadoop 集群 ==================="
- echo " --------------- 启动 hdfs ---------------"
- ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
- echo " --------------- 启动 yarn ---------------"
- ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
- echo " --------------- 启动 historyserver ---------------"
- ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start
- historyserver"
- ;;
- "stop")
- echo " =================== 关闭 hadoop 集群 ==================="
- echo " --------------- 关闭 historyserver ---------------"
- ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop
- historyserver"
- echo " --------------- 关闭 yarn ---------------"
- ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
- echo " --------------- 关闭 hdfs ---------------"
- ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
- ;;
- *)
- echo "Input Args Error..."
- ;;
- esac
复制代码 3、保存退却出,然后执行"chmod +x myhadoop.sh"命令,赋予脚本执行权限。
4、分发脚本到hadoop103、hadoop104服务器上,保证自定义脚本在三台服务器上都可以使用。
- 执行"xsync /home/atwqf/bin/myhadoop.sh"命令。
hadoop103
hadoop104
5、设置完后,测试。
- 执行"myhadoop.sh start"命令启动hadoop集群。
- 执行"myhadoop.sh stop"命令制止hadoop集群。
十二、其他常用脚本
1、执行"cd /home/atwqf/bin"命令。
2、执行"vim jpsall"命令,写入如下内容:
- #!/bin/bash
- for host in hadoop102 hadoop103 hadoop104
- do
- echo =============== $host ===============
- ssh $host jps
- done
复制代码 3、 保存退却出,然后执行"chmod +x jpsall"命令,赋予脚本执行权限。
4、分发脚本到hadoop103、hadoop104服务器上,保证自定义脚本在三台服务器上都可以使用。
- 执行"xsync /home/atwqf/bin"命令。
hadoop103
hadoop104
5、设置完后,测试。
- 执行"jpsall"命令,可以检察到所有服务器的jps进程。
十三、集群时间同步
集群时间同步:找一个呆板,作为时间服务器,所有的呆板与这台集群时间进行定时的同步。以hadoop102为时间服务器,hadoop103、hadoop104跟它对齐。
1、在hadoop102上,检察所有节点ntpd服务状态和开机自启动状态。
- 执行"sudo systemctl status ntpd"命令。
- 执行"sudo systemctl start ntpd"命令。
- 执行"sudo systemctl is-enabled ntpd"命令。
2、在hadoop102上,执行" sudo vim /etc/ntp.conf " 命令打开hadoop102的ntp.conf的设置文件,根据下面三点进行修改。
- 授权 192.168.10.0-192.168.10.255 网段上的所有呆板可以从这台呆板上查询和同步时间,
将#restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
修改为
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
- 集群在局域网中,不使用其他互联网上的时间
将
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
修改为
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
- 添加,当该节点丢失网络连接,依然可以接纳当地时间作为时间服务器为集群中的其他节点提供时间同步。添加内容如下:
server 127.127.1.0
fudge 127.127.1.0 stratum 10
4、在hadoop102 的/etc/sysconfig/ntpd 文件添加"SYNC_HWCLOCK=yes",让硬件时间与体系时间一起同步。
- 执行"sudo vim /etc/sysconfig/ntpd"“命令,添加"SYNC_HWCLOCK=yes”。
5、重新启动 ntpd 服务
- 执行"sudo systemctl start ntpd"命令。
6、设置 ntpd 服务开机启动
- 执行"sudo systemctl enable ntpd"命令。
7、其他呆板设置(hadoop103、hadoop104)
- 关闭所有节点上 ntp 服务和自启动
执行"sudo systemctl stop ntpd"命令。
执行"sudo systemctl disable ntpd"命令。
hadoop103
hadoop104
- 在其他呆板(hadoop103、hadoop104)设置 1 分钟与时间服务器同步一次。
执行"sudo crontab -e"命令。
编写定时任务如下:
*/1 * * * * /usr/sbin/ntpdate hadoop102
hadoop103、hadoop104上
- 修改任意呆板时间
执行" sudo date -s “2024-07-01 11:11:11” "命令。
- 1 分钟后检察呆板是否与时间服务器同步
执行" sudo date "命令。
生产环境:假如服务器能连接外网,不需要时间同步,浪费集群性能;假如服务器连接不了外网,需要时间同步。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |