生资之高在忠信,非关机巧
学业之美在德行,不仅文章
节点 | IP地址 | 原主机名 | 即将更新后的主机名 |
---|---|---|---|
主节点 | 172.16.29.94 | GPU | master |
从节点1 | 172.16.29.95 | CentOS | slave1 |
从节点2 | 172.16.29.96 | ContOS | slave2 |
注意:JDK版本尽量使用1.8
注意:以下以在IP为172.16.29.94的虚拟机(主节点)上安装与部署为例,阅读过程中请注意特别说明
Connecting to 172.16.29.94:22…
Connection established.
To escape to local shell, press ‘Ctrl+Alt+]’.
Last login: Tue Oct 8 16:55:55 2019 from 172.28.54.186
[root@GPU ~]#
其中[root@GPU~]
中的GPU为该虚拟机的主机名,即hostname,每台虚拟机可能会不一样
特别说明:所有虚拟机均执行“使用Xshell连接虚拟机”操作
ll
,得到如下结果[root@GPU ~]# ll
)-rw-------. 1 root root 2094 9月 23 12:55 anaconda-ks.cfg
-rw-------. 1 root root 5468160 9月 27 22:41 core.4021
-rw-r–r-- 1 root root 218720521 10月 8 17:53 hadoop-2.7.7.tar.gz
-rw-r–r--. 1 root root 2142 9月 23 13:01 initial-setup-ks.cfg
-rw-r–r-- 1 root root 189736377 10月 8 17:53 jdk-8u151-linux-x64.tar.gz
drwxr-xr-x. 2 root root 6 9月 27 22:29 tsclient
drwxr-xr-x. 2 root root 6 9月 27 22:29 公共
drwxr-xr-x. 2 root root 6 9月 27 22:29 模板
drwxr-xr-x. 2 root root 6 9月 27 22:29 视频
drwxr-xr-x. 2 root root 6 9月 27 22:29 图片
drwxr-xr-x. 2 root root 6 9月 27 22:29 文档
drwxr-xr-x. 2 root root 6 9月 27 22:29 下载
drwxr-xr-x. 2 root root 6 9月 27 22:29 音乐
drwxr-xr-x. 2 root root 6 9月 27 22:29 桌面
mkdir /usr/local/java
[root@GPU ~]# mkdir /usr/local/java
)tar -C /usr/local/java -zxvf jdk-8u151-linux-x64.tar.gz
,点击回车[root@GPU ~]# tar -C /usr/local/java -zxvf jdk-8u151-linux-x64.tar.gz
)vi /etc/profile
,修改profile配置文件[root@GPU ~]# vi /etc/profile
)i
进入输入模式,在文件的末尾添上如下代码:wq
保存并退出export JAVA_HOME=/usr/local/java/jdk1.8.0_151
export classpath=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
或者. /etc/profile
,使配置文件生效[root@GPU ~]# source /etc/profile
)java
命令,显示如下信息[root@GPU ~]# java
)用法: java [-options] class [args…]
(执行类)
或 java [-options] -jar jarfile [args…]
(执行 jar 文件)
其中选项包括:
-d32 使用 32 位数据模型 (如果可用)
-d64 使用 64 位数据模型 (如果可用)
(省略)
-javaagent:[=<选项>]
加载 Java 编程语言代理, 请参阅 java.lang.instrument
-splash:
使用指定的图像显示启动屏幕
有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。
javac
命令,显示如下信息[root@GPU ~]# javac
)用法: javac
java
和javac
命令均无异常并不能说明安装成功,输入命令java -version
,若出现以下信息,则非安装成功,需要进行补充操作[root@GPU ~]# java -version
)openjdk version “1.8.0_161”
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
rpm -qa | grep java
,若显示如下信息,则需要将虚拟机自带的OpenJDK卸载[root@GPU ~]# rpm -qa | grep java
)java-1.8.0-openjdk-headless-1.8.0.161-2.b14.e17.x86_64
java-1.7.0-openjdk-headless-1.7.0.171-2.6.13.2.e17.x86_64
tzdata-java-2018c-1.e17.noarch
java-1.7.0-openjdk-1.7.0.171-2.6.13.2.e17.x86_64
java-1.8.0-openjdk-1.8.0.161-2.b14.e17.x86_64
javapackages-tools-3.4.1-11.e17.noarch
yum -y remove java-1.8.0-openjdk-headless-1.8.0.161-2.b14.e17.x86_64
,点击回车进行卸载[root@GPU ~]# yum -y remove java-1.8.0-openjdk-headless-1.8.0.161-2.b14.e17.x86_64
)yum -y remove java-1.7.0-openjdk-headless-1.7.0.171-2.6.13.2.e17.x86_64
,点击回车进行卸载[root@GPU ~]# yum -y remove java-1.7.0-openjdk-headless-1.7.0.171-2.6.13.2.e17.x86_64
)rpm -qa | grep java
,出现如下信息即可,即不包含已卸载的JDK[root@GPU ~]# rpm -qa | grep java
)tzdata-java-2018c-1.e17.noarch
python-javapackages-3.4.1-11.e17.noarch
javapackages-tools-3.4.1-11.e17.noarch
source /etc/profile
或者. /etc/profile
,使配置文件生效[root@GPU ~]# source /etc/profile
)java -version
,显示如下信息即为安装成功[root@GPU ~]# java -version
)java version “1.8.0_151”
Java™ SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot™ 64-Bit Server VM (build 25.151-b12, mixed mode)
rm -f jdk-8u151-linux-x64.tar.gz
,删除JDK安装包[root@GPU ~]# rm -f jdk-8u151-linux-x64.tar.gz
)特别说明:所有虚拟机均执行“安装JDK”操作
mkdir /hadoop
,创建目录[root@GPU~]# mkdir /hadoop
)tar -C /hadoop/ -zxvf hadoop-2.7.7.tar.gz
,在上述目录中安装Hadoop[root@GPU~]# tar -C /hadoop/ -zxvf hadoop-2.7.7.tar.gz
)cd /hadoop/hadoop-2.7.7
,进入 hadoop-2.7.7目录中[root@GPU~]# cd /hadoop/hadoop-2.7.7
)ll
,若显示如下信息,则Hadoop安装成功[root@GPU hadoop-2.7.7]# ll
)总用量 112
drwxr-xr-x 2 user ftp 194 7月 19 2018 bin
drwxr-xr-x 3 user ftp 20 7月 19 2018 etc
drwxr-xr-x 2 user ftp 106 7月 19 2018 include
drwxr-xr-x 3 user ftp 20 7月 19 2018 lib
drwxr-xr-x 2 user ftp 239 7月 19 2018 libexec
-rw-r–r-- 1 user ftp 86424 7月 19 2018 LICENSE.txt
drwxr-xr-x 3 root root 22 9月 29 19:14 logs
-rw-r–r-- 1 user ftp 14978 7月 19 2018 NOTICE.txt
-rw-r–r-- 1 user ftp 1366 7月 19 2018 README.txt
drwxr-xr-x 2 user ftp 4096 7月 19 2018 sbin
drwxr-xr-x 4 user ftp 31 7月 19 2018 share
rm -f hadoop-2.7.7.tar.gz
,删除Hadoop安装包[root@GPU ~]# rm -f hadoop-2.7.7.tar.gz
)特别说明:所有虚拟机均执行“安装Hadoop”操作
systemctl stop firewalld
并执行[root@GPU hadoop-2.7.7]# systemctl stop firewalld
)systemctl disable firewalld
并执行[root@GPU hadoop-2.7.7]# systemctl disable firewalld
)vi /etc/sysconfig/selinux
进入selinux文件进行编辑[root@GPU hadoop-2.7.7]# vi /etc/sysconfig/selinux
)i
进入输入模式,找到代码段SELINUX=enforcing
,将其改为SELINUX=disabled
,点击Esc按键,输入:wq
保存并退出hostnamectl set-hostname master
[root@GPU hadoop-2.7.7]# hostnamectl set-hostname master
)hostname
,若出现如下信息,则主机名称更改成功[root@GPU hadoop-2.7.7]# hostname
)master
特别说明:所有虚拟机应设置不同的主机名称,能够区分即可
我将IP为172.16.29.94的虚拟机主机名设置为master(主节点),将IP为172.16.29.95的虚拟机主机名设置为slave1(第一个从节点),将IP为172.16.29.96的虚拟机主机名设置为slave2(第二个从节点),以此类推
即IP为172.16.29.95的虚拟机应执行的命令为hostnamectl set-hostname slave1
([root@CentOS ~]# hostnamectl set-hostname slave1
)
IP为172.16.29.96的虚拟机应执行的命令为hostnamectl set-hostname slave2
([root@CentOS ~]# hostnamectl set-hostname slave2
)
vi /etc/hosts
,对hosts文件进行编辑[root@GPU hadoop-2.7.7]# vi /etc/hosts
)i
进入输入模式,在文件末端添加如下代码后点击Esc按键,输入:wq
保存并退出172.16.29.94 master
172.16.29.95 slave1
172.16.29.96 slave2
特别说明:后续操作有两种选择
选择1:所有虚拟机均执行“修改host文件”操作
选择2:由主机依次执行文件复制命令scp /etc/hosts 172.16.29.95:/etc/
和scp /etc/hosts 172.16.29.96:/etc/
,即有多少未执行“修改host文件”的虚拟机,主机就执行多少次该操作,将hosts文件发放至各个虚拟机,但是需要输入目的虚拟机的密码
输入命令reboot
,重启虚拟机
重启虚拟机后,各主机名会发生变化
如IP为172.16.29.94的虚拟机为[root@master~]#
IP为172.16.29.95的虚拟机为[root@slave1~]#
IP为172.16.29.96的虚拟机为[root@slave2~]#
特别说明:所有虚拟机均执行“重启虚拟机”操作
cd ~
回到根目录ssh-keygen
,点击6次回车,出现如下信息[root@master ~]# ssh-keygen
)cd .ssh
[root@master ~]# cd .ssh
)cat ./id_rsa.pub >> authorized_keys
[root@master .ssh]# cat ./id_rsa.pub >> authorized_keys
)cat authorized_keys
,将生成的公钥复制vi authorized_keys
,对authorized_keys文件进行编辑[root@master .ssh]# vi authorized_keys
)root@master
的公钥,点击i
进入输入模式,在后面添加IP为172.16.29.95的虚拟机在“获取公钥”操作中产生的公钥(结尾为root@slave1
)和IP为172.16.29.96的虚拟机在“获取公钥”操作中产生的公钥(结尾为root@slave2
),添加完成后点击Esc按键,输入:wq
保存并退出scp ./authorized_keys slave1:/root/.ssh/
和scp ./authorized_keys slave2:/root/.ssh/
,即有多少未执行“修改授权公钥文件”的虚拟机,主机就执行多少次该操作,将授权公钥文件发放至各个虚拟机,但是需要输入目的虚拟机的密码[root@master .ssh]# scp ./authorized_keys slave1:/root/.ssh/
)[root@master .ssh]# scp ./authorized_keys slave2:/root/.ssh/
)[root@master ~]# ssh slave1
Last login: Tue Oct 8 21:38:59 2019 from master
[root@slave1 ~]# exit
登出
Connection to slave1 closed.
[root@master ~]# ssh slave2
Last login: Tue Oct 8 18:37:03 2019 from master
[root@slave2 ~]# exit
登出
Connection to slave2 closed.
若在其他的虚拟机上能够自由地进行SSH免密登录,则“设置SSH无密码登录”操作成功
cd ~
,进入根目录cd /hadoop/hadoop-2.7.7/etc/hadoop
,进入该目录[root@master ~]# cd /hadoop/hadoop-2.7.7/etc/hadoop
)ll
,会显示出如下文件总用量 156
-rw-r–r-- 1 user ftp 4436 7月 19 2018 capacity-scheduler.xml
-rw-r–r-- 1 user ftp 1335 7月 19 2018 configuration.xsl
-rw-r–r-- 1 user ftp 318 7月 19 2018 container-executor.cfg
-rw-r–r-- 1 user ftp 1421 9月 29 19:33 core-site.xml
-rw-r–r-- 1 user ftp 3670 7月 19 2018 hadoop-env.cmd
-rw-r–r-- 1 user ftp 4271 9月 29 19:27 hadoop-env.sh
-rw-r–r-- 1 user ftp 2598 7月 19 2018 hadoop-metrics2.properties
-rw-r–r-- 1 user ftp 2490 7月 19 2018 hadoop-metrics.properties
-rw-r–r-- 1 user ftp 9683 7月 19 2018 hadoop-policy.xml
-rw-r–r-- 1 user ftp 1374 9月 29 19:33 hdfs-site.xml
-rw-r–r-- 1 user ftp 1449 7月 19 2018 httpfs-env.sh
-rw-r–r-- 1 user ftp 1657 7月 19 2018 httpfs-log4j.properties
-rw-r–r-- 1 user ftp 21 7月 19 2018 httpfs-signature.secret
-rw-r–r-- 1 user ftp 620 7月 19 2018 httpfs-site.xml
-rw-r–r-- 1 user ftp 3518 7月 19 2018 kms-acls.xml
-rw-r–r-- 1 user ftp 1527 7月 19 2018 kms-env.sh
-rw-r–r-- 1 user ftp 1631 7月 19 2018 kms-log4j.properties
-rw-r–r-- 1 user ftp 5540 7月 19 2018 kms-site.xml
-rw-r–r-- 1 user ftp 11801 7月 19 2018 log4j.properties
-rw-r–r-- 1 user ftp 951 7月 19 2018 mapred-env.cmd
-rw-r–r-- 1 user ftp 1383 7月 19 2018 mapred-env.sh
-rw-r–r-- 1 user ftp 4113 7月 19 2018 mapred-queues.xml.template
-rw-r–r-- 1 root root 886 9月 29 19:33 mapred-site.xml
-rw-r–r-- 1 user ftp 758 7月 19 2018 mapred-site.xml.template
-rw-r–r-- 1 user ftp 21 9月 29 19:33 slaves
-rw-r–r-- 1 user ftp 2316 7月 19 2018 ssl-client.xml.example
-rw-r–r-- 1 user ftp 2697 7月 19 2018 ssl-server.xml.example
-rw-r–r-- 1 user ftp 2250 7月 19 2018 yarn-env.cmd
-rw-r–r-- 1 user ftp 4612 9月 29 19:28 yarn-env.sh
-rw-r–r-- 1 user ftp 1699 9月 29 19:33 yarn-site.xml
i
进入输入模式模式,点击Esc按键,输入:wq
保存并退出),也可以点击这里(提取码wsha)进行下载后,进行相应的修改,然后使用Xftp传输到相应的文件夹内进行替换vi core-site.xml
(或者直接修改下载文件后上传),修改core-site.xml文件[root@master hadoop]# vi core-site.xml
)<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://master:9000value>
property>
<property>
<name>io.file.buffer.sizename>
<value>131072value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>file:/hadoop/tmpvalue>
<description>Abase for other temporary directories.description>
property>
<property>
<name>hadoop.proxyuser.root.hostsname>
<value>*value>
property>
<property>
<name>hadoop.proxyuser.root.groupsname>
<value>*value>
property>
configuration>
vi hdfs-site.xml
(或者直接修改下载文件后上传),修改hdfs-site.xml文件[root@master hadoop]# vi hdfs-site.xml
)<configuration>
<property>
<name>dfs.namenode.name.dirname>
<value>file:/hadoop/hdfs/namevalue>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>file:/hadoop/hdfs/datavalue>
property>
<property>
<name>dfs.replicationname>
<value>3value>
property>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>slave1:9001value>
property>
<property>
<name>dfs.webhdfs.enabledname>
<value>truevalue>
property>
configuration>
vi mapred-site.xml
(或者直接修改下载文件后上传),修改mapred-site.xml文件[root@master hadoop]# vi mapred-site.xml
)<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>
vi yarn-site.xml
(或者直接修改下载文件后上传),修改yarn-site.xml文件[root@master hadoop]# vi yarn-site.xml
)<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.classname>
<value>org.apache.hadoop.mapred.ShuffleHandlervalue>
property>
<property>
<name>yarn.resourcemanager.addressname>
<value>master:8032value>
property>
<property>
<name>yarn.resourcemanager.scheduler.addressname>
<value>master:8030value>
property>
<property>
<name>yarn.resourcemanager.resource-tracker.addressname>
<value>master:8031value>
property>
<property>
<name>yarn.resourcemanager.admin.addressname>
<value>master:8033value>
property>
<property>
<name>yarn.resourcemanager.webapp.addressname>
<value>master:8088value>
property>
configuration>
rm -f slaves
(该文件禁止在本机修改之后上传,问题在于Windows系统的回车),删除slaves文件[root@master hadoop]# rm -f slaves
)vi slaves
,创建并编写该文件[root@master hadoop]# vi slaves
)master
slave1
slave2
特别说明:其余各虚拟机暂时无需执行“修改Hadoop配置文件1”操作,后文会有相关介绍
在/hadoop目录下创建数据存放的文件夹temp、hdfs、hdfs/data、hdfs/name
cd ~
,进入根目录cd hadoop/
,进入/hadoop目录[root@master ~]# cd hadoop/
)mkdir /hadoop/tmp
,创建tmp目录[root@master hadoop]# mkdir /hadoop/tmp
)mkdir /hadoop/hdfs
,创建hdfs目录[root@master hadoop]# mkdir /hadoop/hdfs
)mkdir /hadoop/hdfs/name
,创建hdfs/name目录[root@master hadoop]# mkdir /hadoop/hdfs/name
)mkdir /hadoop/hdfs/data
,创建hdfs/data目录[root@master hadoop]# mkdir /hadoop/hdfs/data
)特别说明:其余各虚拟机暂时无需执行“创建目录”操作,后文会有相关介绍
cd ~
,进入根目录cd /hadoop/hadoop-2.7.7/etc/hadoop/
,进入/hadoop目录[root@master ~]# cd /hadoop/hadoop-2.7.7/etc/hadoop/
)vi hadoop-env.sh
,点击i
进入输入模式,找到export JAVA_HOME=${JAVA_HOME}
,将其替换为JDK的安装路径,即export JAVA_HOME=/usr/local/java/jdk1.8.0_151
,点击Esc按键,输入:wq
保存并退出vi yarn-env.sh
,点击i
进入输入模式,在末尾添加export JAVA_HOME=/usr/local/java/jdk1.8.0_151
,点击Esc按键,输入:wq
保存并退出特别说明:其余各虚拟机暂时无需执行“修改Hadoop配置文件2”操作,后文会有相关介绍
vi /etc/profile
,修改profile配置文件i
进入输入模式export HADOOP_HOME=/hadoop/hadoop-2.7.7
,即Hadoop安装路径export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
,使配置文件生效特别说明:“完成其余虚拟机的相关配置”有两种选择
选择1(推荐):将其余各虚拟机依次按照“修改Hadoop配置文件1”、“创建目录”、“修改Hadoop配置文件2”三项操作
选择2:在已经配置好的master节点中输入命令cd ~
进入根目录,输入cd /hadoop/
进入该目录,依次输入命令scp -r hadoop-2.7.7/ slave1:/hadoop/
和scp -r hadoop-2.7.7/ slave2:/hadoop/
即([root@master hadoop]# scp -r hadoop-2.7.7/ slave1:/hadoop/
)和([root@master hadoop]# scp -r hadoop-2.7.7/ slave2:/hadoop/
)
该操作为将master结点hadoop目录中的hadoop-2.7.7目录中所有内容递归地复制到slave1和slave2的/hadoop目录下
不推荐的原因是在实际操作中,当hadoop-2.7.7目录中的所有内容复制到slave1和slave2时,出现了有的节点不存在master已经创建的/hadoop/hdfs/data或者/hadoop/hdfs/name
输入source /etc/profile
,使配置文件生效
特别说明:所有虚拟机均执行“使配置文件重新生效”操作
输入命令hdfs namenode -format
,进行格式化
特别说明:除主节点外其他虚拟机不需要执行“格式化NameNode”操作
输入命令start-all.sh
,启动Hadoop
在主节点输入命令jps
,应该显示如下6项信息
4736 ResourceManager
23249 Jps
1125 StandaloneAgent
4037 NameNode
4873 NodeManager
11881 DataNode
在slave1节点输入命令jps
,应该显示如下5项信息
1109 StandaloneAgent
9366 Jps
15256 DataNode
5821 SecondaryNameNode
6189 NodeManager
在slave2节点输入命令jps
,应该显示如下4项信息
16225 DataNode
1113 StandaloneAgent
23548 Jps
3853 NodeManager
注意:根据每个人的需求不同,其显示结果也不尽相同,比如我的主节点也用作了DataNode,因此会显示存在DataNode端口
打开浏览器,输入主节点虚拟机(master)的 IP地址+端口8088(如172.16.29.94:8088),点击页面左侧的Nodes,会出现集群内所有虚拟机的信息
打开浏览器,输入主节点虚拟机(master)的 IP地址+端口50070(如172.16.29.94:50070),点击页面上方的Datanodes,会出现集群内所有虚拟机的信息
多台Linux虚拟机Hadoop集群的安装与部署到此就告一段落
有疑问的朋友可以在下方留言或者私信我,我尽量尽早回答
欢迎各路大神指点、交流!
求关注!求点赞!求转发!