安装好CentOS Linux 8 并升级完内核和软件包之后再进行Hadoop的安装。
参考:
1、大数据处理和软件开发第一步:VMware下安装CentOS 8 Linux操作系统
2、怎么给CentOS Linux 8升级内核并开启BBR
手里有一台Dell R620服务器,共有8块硬盘,通过VMware将虚拟机分布在这8块硬盘上,模拟8台服务器,在一个机架上:
编号:/BJ0/LG0/hadoop221-228
221-222:NameNode,223-228:DataNode
集群规划如下:(服务器为hadoop221-hadoop228)
221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | ||
---|---|---|---|---|---|---|---|---|---|
时间服务 | chrony | √ | |||||||
Zookeeper集群(选举) | Zookeeper(QuorumPeerMain) | √ | √ | √ | |||||
HDFS集群(存储) | journalnode(负责NameNode同步) | √ | √ | √ | |||||
NameNodes | √ | √ | |||||||
DFSZKFailoverController(zkfc) | √ | √ | |||||||
DataNode | √ | √ | √ | √ | √ | √ | |||
YARN集群(计算) | ResourceManager(资源分配与调度) | √ | √ | ||||||
NodeManager | √ | √ | √ | √ | √ | √ | |||
MapReduce开发包 | MapReduce(JobHistoryServer) | √ | |||||||
SYNC | 同步文件服务器 | √ | |||||||
HBase | NoSQL | √ | √ | √ | √ | √ | √ |
注:1、NameNodes和zkfc一一对应;2、DataNode和NodeManager都是works文件配置;3、Zookeeper至少3个,必须奇数台;4、journalnode至少3个,必须奇数;5、NameNodes一个active另一个Standby;6、ResourceManager一个active另一个Standby;
zkfc :DFSZKFailoverControlle作为一个ZK集群的客户端,用来监控NN的状态信息
我们以下所有操作都可以先在一台服务器上操作,完毕以后再将这个虚拟服务器复制成出来7份,完成最终的部署。
根据上面的集群规划,在221-228这8台服务器上安装chrony。从CentOS7开始已经默认使用chrony作为网络时间同步软件了,ntpd作为过时的产品,我们也就不在研究使用了。
若要安装使用chrony,参考下面这篇文章:
如何在CentOS Linux 8上安装时间同步服务chrony集群?(ntp被代替了)
配置时我们把服务端server都配置成192.168.1.222,这样后面复制出来的其它服务器就能直接在222服务器上获取时间了。
因为Hadoop需要开启的端口很多,而且牵涉到很多的权限,所以我们在测试时将防火墙和SELINUX都关掉。
在生产环境中,需要针对不同的开放端口做针对性的设置。
运行以下命令,关闭防火墙
systemctl stop firewalld #临时关闭防火墙
systemctl disable firewalld #禁止开机启动防火墙
systemctl status firewalld #查看防火墙状态。
运行以下命令:
vi /etc/selinux/config #SELINUX配置文件
相关参数修改如下:
#SELINUX=enforcing
SELINUX=disabled
重启服务器,然后查看SELINUX状态:
reboot #重启
getenforce #查询SELinux的运行模式,permissive(宽容模式);enforcing(强制模式);
/usr/sbin/sestatus -v #查看SELINUX的状态
显示如下内容,则说明SELINUX已经关闭了
SELinux status: disabled
运行下面的命令,修改本机的hostname:
hostnamectl set-hostname hadoop221 #修改hostname
运行下面的命令查看设置好的hostname:
cat /etc/hostname
如果显示如下的内容,则说明修改成功
hadoop221
222-228服务器上的hostname修改,等服务器安装完毕以后统一操作(本文的底部有相关内容)
由于一次次的录入IP地址,不利于管理,我们在hosts里面把服务器的hostname跟IP地址对应起来,输入下面的命令开始操作:
vi /etc/hosts
内容设置成如下所示:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.221 hadoop221
192.168.1.222 hadoop222
192.168.1.223 hadoop223
192.168.1.224 hadoop224
192.168.1.225 hadoop225
192.168.1.226 hadoop226
192.168.1.227 hadoop227
192.168.1.228 hadoop228
192.168.1.229 hadoop229
192.168.1.230 hadoop230
录入下述命令
useradd hadoop #添加hadoop用户,我们默认登录的是9Tristone用户,需要切换到root目录
passwd hadoop #录入一遍“jiqun996”回车,再录入一遍“jiqun996”回车后将hadoop用户密码设置为“jiqun996”
从Oracle上下载jdk,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
尽量不要使用其他版本的jdk,容易出现一些奇怪的问题,比如:没有jps命令,自己都不知道哪里出问题了。CSDN的下载镜像:jdk-8u231-linux-x64.tar.gz下载。Oracle不允许随意设立下载镜像,我就在CSDN这里就设置了1个积分下载,以便绕过Oracle限制。
上述文件下载完成以后,解压出来(如果是官网下载的可以不解压,直接上传到服务器上)。然后把解压出来的“jdk-8u231-linux-x64.tar.gz”传到服务器上。如果本地没有解压,那么传到服务器上可能要解压两次。
进入服务器保存这个文件的目录以后进行如下操作(下面的命令都是以root的权限操作的):
mkdir /usr/java #建立java的工作目录(文件夹)
tar -zxvf jdk-8u231-linux-x64.tar.gz #解压JDK
mv jdk1.8.0_231/ /usr/java/ #将JDK移动(剪切)到/usr/java/目录
chown -R root:root /usr/java/jdk1.8.0_231/ #将JDK所有者设置为root
ln -sf /usr/java/jdk1.8.0_231 /usr/local/jdk #设置JDK的软链接
上述的软链接的意思是:访问/usr/local/jdk就是访问/usr/java/jdk1.8.0_231,有点类似于Windows的快捷方式,但是比快捷方式更强大。
修改全局环境变量:
vi /etc/profile #文件底部添加以下内容
在文件底部添加以下内容:
export JAVA_HOME="/usr/local/jdk"
export PATH=$JAVA_HOME/bin:$PATH
加载新的全局环境变量:
source /etc/profile
jps
显示类似以下内容,就算安装jdk成功了
2491 Jps
由于Zookeeper类似于民主选举,每台服务器分别投票共同选举一个作为leader,剩下的都是follower。基于这个原因,官方建议服务器集群设置为奇数台,偶数台的话会有一台的资源浪费。根据咱们的集群规划:226-228为我们的Zookeeper服务器。
先用root权限操作:
先用root权限操作:
先用root权限操作:
cd #进入root主目录
wget https://mirrors.aliyun.com/apache/zookeeper/zookeeper-3.5.6/apache-zookeeper-3.5.6-bin.tar.gz
tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz
mkdir /home/hadoop/server
mkdir -p /home/hadoop/data/zkdata
mkdir -p /home/hadoop/log/zklog
mv apache-zookeeper-3.5.6-bin/ /home/hadoop/server/
ln -sf /home/hadoop/server/apache-zookeeper-3.5.6-bin/ /home/hadoop/zookeeper
chown -R hadoop:hadoop /home/hadoop/*
vi /etc/profile #文件底部添加以下内容
文件底部添加以下内容
export ZOOKEEPER_HOME="/home/hadoop/zookeeper"
export PATH=$ZOOKEEPER_HOME/bin:$PATH
执行下述命令加载全局环境变量,然后切换到hadoop用户开始操作:
source /etc/profile
su hadoop
下面以hadoop用户操作
下面以hadoop用户操作
下面以hadoop用户操作
重要的事情说三遍:
cd /home/hadoop/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi /home/hadoop/zookeeper/conf/zoo.cfg #对应内容调整如下
内容调整如下:
dataDir=/home/hadoop/data/zkdata
dataLogDir=/home/hadoop/log/zklog/
server.226=hadoop226:2888:3888
server.227=hadoop227:2888:3888
server.228=hadoop228:2888:3888
如果存在的内容则修改,不存在的内容,直接添加即可,解释如下:
格式:server.serverid=host:tickpot:electionport
server:固定写法
serverid:每个服务器的指定ID(必须处于1-255之间,必须每一台机器不能重复)
host:主机名
tickpot:心跳通信端口
electionport:选举端口
最后不要忘了在每个服务器“/home/hadoop/data/zkdata/”下新建文件“myid”并把当前服务器编号写进去,举例:
echo 1 > /home/hadoop/data/zkdata/myid
以下内容只能在226-228上执行才能看到正确的结果:
zkServer.sh stop #停止Zookeeper服务
zkServer.sh start #开启Zookeeper服务
zkServer.sh status #开启Zookeeper服务
正常情况下会看到下面的内容:
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
如果启动失败,可以到“/home/hadoop/zookeeper/logs/”这个目录里面看看启动日志。
录入下面的命令:
jps
可以看到如下的结果:
2690 Jps
2473 QuorumPeerMain
查看Zookeeper的运行状态
zkServer.sh status
显示内容如下:
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader (或者显示:follower)
注意:虽然我们在配置文件中写明了服务器的列表信息,但是,我们还是需要去每一台服务 器去启动,不是一键启动集群模式。
每启动一台查看一下状态再启动下一台
三台机器上都要有QuorumPeerMain进程,都能显示follower或者leader
先用root权限操作:
先用root权限操作:
先用root权限操作:
cd /home/hadoop/server
wget https://mirrors.aliyun.com/apache/hadoop/core/hadoop-3.2.1/hadoop-3.2.1.tar.gz
tar -zxvf hadoop-3.2.1.tar.gz
ln -sf /home/hadoop/server/hadoop-3.2.1/ /home/hadoop/hadoop
chown -R hadoop:hadoop /home/hadoop/*
vi /etc/profile #在文件尾部添加以下内容,用root用户操作
#####################################################################
export HADOOP_HOME="/home/hadoop/hadoop"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source /etc/profile
echo $HADOOP_HOME
显示如下内容就对了
/home/hadoop/hadoop
下面以hadoop用户操作
下面以hadoop用户操作
下面以hadoop用户操作
执行以下命令
su hadoop
rm -rf /home/hadoop/hadoop/share/doc #删除文档,很大,又没用
mkdir -p /home/hadoop/data/dfs/data
mkdir /home/hadoop/data/dfs/name
mkdir /home/hadoop/data/dfs/tmp
mkdir /home/hadoop/data/journaldata
cd /home/hadoop/hadoop/etc/hadoop
vi /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh
添加一行内容:
export JAVA_HOME="/usr/local/jdk"
vi /home/hadoop/hadoop/etc/hadoop/core-site.xml
内容如下:
xml version="1.0" encoding="UTF-8"?>
xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定hdfs的nameservice为myha01 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://myha01/
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/data/dfs/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop226:2181,hadoop227:2181,hadoop228:2181</value>
</property>
<!-- hadoop链接zookeeper的超时时长设置 -->
<property>
<name>ha.zookeeper.session-timeout.ms</name>
<value>1000</value>
<description>ms</description>
</property>
<!-- 修改core-site.xml中的ipc参数,防止出现连接journalnode服务ConnectException -->
<property>
<name>ipc.client.connect.max.retries</name>
<value>100</value>
<description>Indicates the number of retries a client will make to establish a server connection.</description>
</property>
<property>
<name>ipc.client.connect.retry.interval</name>
<value>10000</value>
<description>Indicates the number of milliseconds a client will wait for before retrying to establish a server connection.</description>
</property>
<property>
<name>topology.script.file.name</name>
<value>10000</value>
<description>Indicates the number of milliseconds a client will wait for before retrying to establish a server connection.</description>
</property>
</configuration>
vi /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml
内容如下
xml version="1.0" encoding="UTF-8"?>
xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定副本数 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 配置namenode和datanode的工作目录-数据存储目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/dfs/data</value>
</property>
<!-- 启用webhdfs -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!--指定hdfs的nameservice为myha01,需要和core-site.xml中的保持一致
dfs.ha.namenodes.[nameservice id]为在nameservice中的每一个NameNode设置唯一标示符。
配置一个逗号分隔的NameNode ID列表。这将是被DataNode识别为所有的NameNode。
例如,如果使用"myha01"作为nameservice ID,并且使用"nn1"和"nn2"作为NameNodes标示符
-->
<property>
<name>dfs.nameservices</name>
<value>myha01</value>
</property>
<!-- myha01下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.myha01</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.myha01.nn1</name>
<value>hadoop221:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.myha01.nn1</name>
<value>hadoop221:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.myha01.nn2</name>
<value>hadoop222:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.myha01.nn2</name>
<value>hadoop222:50070</value>
</property>
<!-- 指定NameNode的edits元数据的共享存储位置。也就是JournalNode列表
该url的配置格式:qjournal://host1:port1;host2:port2;host3:port3/journalId
journalId推荐使用nameservice,默认端口号是:8485 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop223:8485;hadoop224:8485;hadoop225:8485/myha01
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/data/journaldata</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.myha01</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence
shell(/bin/true)</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<property>
<name>ha.failover-controller.cli-check.rpc-timeout.ms</name>
<value>60000</value>
</property>
</configuration>
vi /home/hadoop/hadoop/etc/hadoop/mapred-site.xml
全部内容如下:
xml version="1.0"?>
xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 指定mapreduce jobhistory地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop222:10020</value>
</property>
<!-- 任务历史服务器的web地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop222:19888</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>/home/hadoop/hadoop/etc/hadoop:/home/hadoop/hadoop/share/hadoop/common/lib/*:/home/hadoop/hadoop/share/hadoop/common/*:/home/hadoop/hadoop/share/hadoop/hdfs:/home/hadoop/hadoop/share/hadoop/hdfs/lib/*:/home/hadoop/hadoop/share/hadoop/hdfs/*:/home/hadoop/hadoop/share/hadoop/mapreduce/lib/*:/home/hadoop/hadoop/share/hadoop/mapreduce/*:/home/hadoop/hadoop/share/hadoop/yarn:/home/hadoop/hadoop/share/hadoop/yarn/lib/*:/home/hadoop/hadoop/share/hadoop/yarn/*</value>
</property>
</configuration>
vi /home/hadoop/hadoop/etc/hadoop/yarn-site.xml
内容如下
xml version="1.0"?>
<configuration>
<!-- 开启RM高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop226</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop227</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop226:2181,hadoop227:2181,hadoop228:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<!-- 启用自动恢复 -->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!-- 制定resourcemanager的状态信息存储在zookeeper集群上 -->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value> /home/hadoop/hadoop/etc/hadoop:/home/hadoop/hadoop/share/hadoop/common/lib/*:/home/hadoop/hadoop/share/hadoop/common/*:/home/hadoop/hadoop/share/hadoop/hdfs:/home/hadoop/hadoop/share/hadoop/hdfs/lib/*:/home/hadoop/hadoop/share/hadoop/hdfs/*:/home/hadoop/hadoop/share/hadoop/mapreduce/lib/*:/home/hadoop/hadoop/share/hadoop/mapreduce/*:/home/hadoop/hadoop/share/hadoop/yarn:/home/hadoop/hadoop/share/hadoop/yarn/lib/*:/home/hadoop/hadoop/share/hadoop/yarn/*</value>
</property>
<property>
<!-- 客户端通过该地址向RM提交对应用程序操作 -->
<name>yarn.resourcemanager.address.rm1</name>
<value>hadoop226:8032</value>
</property>
<property>
<!--ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。 -->
<name>yarn.resourcemanager.scheduler.address.rm1</name>
<value>hadoop226:8030</value>
</property>
<property>
<!-- RM HTTP访问地址,查看集群信息-->
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>hadoop226:8088</value>
</property>
<property>
<!-- NodeManager通过该地址交换信息 -->
<name>yarn.resourcemanager.resource-tracker.address.rm1</name>
<value>hadoop226:8031</value>
</property>
<property>
<!--管理员通过该地址向RM发送管理命令 -->
<name>yarn.resourcemanager.admin.address.rm1</name>
<value>hadoop226:8033</value>
</property>
<property>
<name>yarn.resourcemanager.ha.admin.address.rm1</name>
<value>hadoop226:23142</value>
</property>
<property>
<name>yarn.resourcemanager.address.rm2</name>
<value>hadoop227:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address.rm2</name>
<value>hadoop227:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>hadoop227:8088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm2</name>
<value>hadoop227:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address.rm2</name>
<value>hadoop227:8033</value>
</property>
<property>
<name>yarn.resourcemanager.ha.admin.address.rm2</name>
<value>hadoop227:23142</value>
</property>
</configuration>
vi /home/hadoop/hadoop/etc/hadoop/workers
这个文件里面填写的是存储/计算节点(HDFS和YARN)的主机名称,内容如下:
hadoop223
hadoop224
hadoop225
hadoop226
hadoop227
hadoop228
Hbase的安装单独谢了一篇文章,可以参考一下。
参考文章:怎么安装HBase?如何在CentOS Linux 8 下安装配置Hbase?
注意:以下内容需要一步一步的来操作,如果你还不熟悉,一定不要跳过任何一步。
将配置好的虚拟机复制出来7份,并分别都启动,接着进行如下操作:
先用root权限操作:
先用root权限操作:
先用root权限操作:
用root用户执行下述命令:
在222-228服务器上运行以下指令,修改成对应的IP
vi /etc/sysconfig/network-scripts/ifcfg-ens160
IP配置完毕以后,输入一下指令,重启网卡:
先载入新的网卡配置文件:
nmcli c reload
执行网卡重启(下面的三条命令都可以):
nmcli c up ens160
nmcli d reapply ens160
nmcli d connect ens160
总结:重启CentOS Linux 8的网卡,先载入新的配置文件,然后再执行重启网卡命令即可。
参考资料:CentOS Linux 8怎么配置IP?怎么重启网卡?
先用root权限操作:
先用root权限操作:
先用root权限操作:
用root用户执行下述命令:
在222-228服务器上运行以下指令,修改成对应的hostname
hostnamectl set-hostname hadoop222
hostnamectl set-hostname hadoop223
hostnamectl set-hostname hadoop224
hostnamectl set-hostname hadoop225
hostnamectl set-hostname hadoop226
hostnamectl set-hostname hadoop227
hostnamectl set-hostname hadoop228
生成各种密码文件(如果是虚拟机,可在安装全部的软件后再操作)
下面以hadoop用户操作
下面以hadoop用户操作
下面以hadoop用户操作
1、 在所有的服务器上执行以下命令(包括主服务器)
cd #进入hadoop的主目录
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa #生成验证密钥
cat ~/.ssh/id_rsa.pub|ssh hadoop@hadoop221 "cat - >> ~/.ssh/authorized_keys" #发送给主服务器
2、如果需要互相免密码登录,则主服务器执行下面命令,把密钥分发给从服务器
scp ~/.ssh/authorized_keys hadoop@hadoop222:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys hadoop@hadoop223:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys hadoop@hadoop224:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys hadoop@hadoop225:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys hadoop@hadoop226:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys hadoop@hadoop227:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys hadoop@hadoop228:~/.ssh/authorized_keys
在所有的服务器上执行以下命令(包括主服务器)
chmod 0600 ~/.ssh/authorized_keys
退出hadoop用户,再重新 su hadoop进入一次即可免密登录了
下面以hadoop用户操作
下面以hadoop用户操作
下面以hadoop用户操作
用hadoop用户执行下述命令,在226-228上分别执行下列命令:
echo 226 > /home/hadoop/data/zkdata/myid #hadoop226上执行这个命令
echo 227 > /home/hadoop/data/zkdata/myid #hadoop227上执行这个命令
echo 228 > /home/hadoop/data/zkdata/myid #hadoop228上执行这个命令
重点强调: 每台服务器中的hadoop安装包的目录必须一致, 安装包的配置信息还必须保持一致
重点强调: 每台服务器中的hadoop安装包的目录必须一致, 安装包的配置信息还必须保持一致
重点强调: 每台服务器中的hadoop安装包的目录必须一致, 安装包的配置信息还必须保持一致
下面以hadoop用户操作
下面以hadoop用户操作
下面以hadoop用户操作
如果是在真实的服务器上操作,则需要将Hadoop安装包分发到其他集群节点,命令如下:
scp -r /home/hadoop/server/hadoop-3.2.1/ hadoop222:$PWD
scp -r /home/hadoop/server/hadoop-3.2.1/ hadoop223:$PWD
scp -r /home/hadoop/server/hadoop-3.2.1/ hadoop224:$PWD
scp -r /home/hadoop/server/hadoop-3.2.1/ hadoop225:$PWD
scp -r /home/hadoop/server/hadoop-3.2.1/ hadoop226:$PWD
scp -r /home/hadoop/server/hadoop-3.2.1/ hadoop227:$PWD
scp -r /home/hadoop/server/hadoop-3.2.1/ hadoop228:$PWD
重点强调:一定要按照以下步骤逐步进行操作
重点强调:一定要按照以下步骤逐步进行操作
重点强调:一定要按照以下步骤逐步进行操作
下面以hadoop用户操作
下面以hadoop用户操作
下面以hadoop用户操作
启动3台服务器上的zookeeper服务,一台一台启动(226-228)
zkServer.sh start
显示内容如下:
ZooKeeper JMX enabled by default
Using config: /home/hadoop/apps/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
查看是否启动成功:
jps
显示内容类似如下:
2674 Jps
2647 QuorumPeerMain
查看各台服务器的状态:
zkServer.sh status
显示内容类似如下:
ZooKeeper JMX enabled by default
Using config: /home/hadoop/apps/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower (或者显示leader)
三台机器,一台一台启动并显示集群成功以后,继续执行以下内容。
按照之前的规划,我的是在hadoop223、hadoop224、hadoop225上进行启动,启动命令如下:
hdfs --daemon start journalnode
jps
显示内容如下:
2578 JournalNode
2627 Jps
格式化namenode,在hadoop221上执行,只在第一次安装的时候运行此命令,会清空数据
hdfs namenode -format
显示内容部分如下:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop1/192.168.1.221
************************************************************/
要把在hadoop221节点上生成的元数据 给复制到 另一个namenode(hadoop222)节点上,只在第一次安装的时候运行此命令
cd /home/hadoop/data
ls
显示内容如下:
dfs journaldata zkdata
复制namenode数据给hadoop222
scp -r dfs/ hadoop222:$PWD
显示内容如下:
The authenticity of host 'hadoop2 (192.168.1.222)' can't be established.
ECDSA key fingerprint is SHA256:QMy************************.
ECDSA key fingerprint is MD5:86:**: **:**:**:**:**:**:**:43:15:72:ea.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'hadoop2,192.168.1.222' (ECDSA) to the list of known hosts.
VERSION 100% 218 96.2KB/s 00:00
seen_txid 100% 2 1.0KB/s 00:00
fsimage_0000000000000000000.md5 100% 62 28.1KB/s 00:00
fsimage_0000000000000000000 100% 401 163.3KB/s 00:00
重点强调:只能在nameonde节点进行(hadoop221/ hadoop222)
重点强调:只能在nameonde节点进行(hadoop221/ hadoop222)
重点强调:只能在nameonde节点进行(hadoop221/ hadoop222)
hdfs zkfc -formatZK
显示内容如下:
##############################
2019-11-25 11:09:43,778 INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/myha01 in ZK.
2019-11-25 11:09:43,783 INFO zookeeper.ZooKeeper: Session: 0x10000bc570d0000 closed
2019-11-25 11:09:43,785 INFO zookeeper.ClientCnxn: EventThread shut down for session: 0x10000bc570d0000
2019-11-25 11:09:43,786 INFO tools.DFSZKFailoverController: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DFSZKFailoverController at hadoop221/192.168.1.221
************************************************************/
##############################
只在第一次安装的时候运行此命令,结束!!!!
只在第一次安装的时候运行此命令,结束!!!!
只在第一次安装的时候运行此命令,结束!!!!
Hadoop启动顺序:Zookeeper->Hadoop->Hbase>Hive…
stop-hbase.sh #停止Hbase,最好在hadoop221(HMaster)上执行
stop-all.sh #最好在hadoop221(NameNode)上执行
mapred --daemon stop historyserver #hadoop222上执行
zkServer.sh stop #hadoop226、hadoop227、hadoop228上操作
在hadoop226、hadoop227、hadoop228上分别执行以下命令:
zkServer.sh stop
zkServer.sh start
jps
显示如下内容,则启动成功
2674 Jps
2647 QuorumPeerMain
其中一台机器执行就OK了,比如:hadoop221
stop-dfs.sh #先停掉服务
start-dfs.sh #如果出现错误,则在hadoop-env.sh中,再显示地重新声明一遍JAVA_HOME
显示内容如下:
Starting namenodes on [hadoop221 hadoop222]
Starting datanodes
Starting journal nodes [hadoop223 hadoop224 hadoop225]
Starting ZK Failover Controllers on NN hosts [hadoop221 hadoop222]
执行命令查看:
jps
hadoop221、hadoop222上显示如下:
2611 DFSZKFailoverController
2201 NameNode
2732 Jps
hadoop223、224、225 …显示如下:
1828 JournalNode
2055 DataNode
2188 Jps
在主备 resourcemanager(hadoop226、hadoop227) 中随便选择一台进行启动:
stop-yarn.sh
start-yarn.sh
显示内容如下:
Starting resourcemanagers on [ hadoop226 hadoop227]
Starting nodemanagers
执行命令查看:
jps
hadoop226、hadoop227 显示如下:
1890 QuorumPeerMain
2071 DataNode
2791 Jps
2650 NodeManager
2509 ResourceManager
若备用节点的 resourcemanager 没有启动起来,则手动启动起来,在hadoop227上进行手动启动
yarn-daemon.sh start resourcemanager
在hadoop222上执行如下命令:
mapred --daemon stop historyserver
mapred --daemon start historyserver
hadoop221上执行
stop-hbase.sh
start-hbase.sh
HDFS
[hadoop@hadoop221 ~] $ hdfs haadmin -getServiceState nn1
active
[hadoop@hadoop221 ~] $ hdfs haadmin -getServiceState nn2
standby
如果两个NameNode都是“standby”则执行:“hdfs --daemon start zkfc”,激活选举制度
YARN
[hadoop@hadoop226 ~]$ yarn rmadmin -getServiceState rm1
active
[hadoop@hadoop226 ~]$ yarn rmadmin -getServiceState rm2
standby
HDFS
hadoop221: http://hadoop221:50070/dfshealth.html#tab-overview
hadoop222: http://hadoop222:50070/dfshealth.html#tab-overview
YARN
standby节点会自动跳到avtive节点:http://hadoop226:8088/cluster
MapReduce历史服务器web界面:http://hadoop222:19888/jobhistory
HBase
HMaster数据查看:http://hadoop221:16010/
RegionServer数据查看:http://hadoop228:16030/