0


Hadoop高可用集群搭建,NameNode启动不成功问题,DFSZKFailoverController启动不成问题

>NameNode启动不成功问题

>resourcremanager启动不成功问题

>DFSZKFailoverController启动不成问题

在本文最后会做出解释、

前期准备!

有一个完整并且搭建成功,可以启动的zookeeper集群!

没搭建好zookeeper的去博主的上一篇文章搭建一下

请注意,如果没有特别提出,那么所有的命令都是在hadoop01的虚拟机上执行的。

1、修改hadoop环境变量

创建一个hadoop-HA目录

mkdir -p /export/servers/hadoop-HA

创建成功后,之前搭建过的同学直接进行解压缩,

之前没有搭建过hadoop集群的,接下来自己创建一个目录

mkdir -p export/software/

创建完成之后,切换到software目录

cd /export/software

输入rz进行上传自己提前下载的hadoop压缩包

接下来让我们进行解压缩

tar -zxvf hadoop-3.3.0.tar.gz -C /export/servers/hadoop-HA/

下载完成后,我们cd到HA目录

cd /export/servers/hadoop-HA/

之后,输入ll查看解压状况。

输入下面的命令,对下载的hadoop进行重命名。

mv hadoop-3.3.1 hadoop

修改名称完成之后,再创建一个目录,用来存放数据,下面的每一个目录都需要在三台虚拟机上创建!

mkdir -p /export/servers/hadoop-HA/hadoop/logs
mkdir -p /export/data/hadoop-HA/hadoop/
mkdir -p /export/data/hadoop/namenode
mkdir -p /export/data/hadoop/datanode

创建完成后,无需理会,接下来让我们修改一下环境变量。

首先输入cd,回到根目录

输入

vi /etc/profile

编写一下自己的环境变量。

之前配置过hadoop环境的,修改成下面这个,没有修改过hadoop环境的,去看一下博主之前的文章,确保自己的java类环境已经搭建好。

export HADOOP_HOME=/export/servers/hadoop-HA/hadoop

修改完成后,esc,冒号wq!退出。

之后输入

source /etc/profile

使修改的环境变量生效。

修改环境变量完成后,输入

hadoop version

进行对hadoop版本进行展示,如果成功就进行下一步,如果没成功,就回去检查一下自己的环境变量是不是哪里出了问题。

2、修改配置文件

接下来让我们一起修改一下配置文件,

请注意!!!一下所有的内容,请加在两个 <configuration> 的标签中间!!!2.1不用

而且

博主的三台虚拟机名称是hadoop01,hadoop02,和hadoop03。大家请根据自己的虚拟机名称来进行修改。

首先切换到下面的目录,

cd /export/servers/hadoop-HA/hadoop/etc/hadoop

2.1 之后再hadoop目录上执行

vi hadoop-env.sh

输入,需要注意的是,java的环境变量需要自己配置好哈,也就是第一行,根据自己的情况配置,如果不知道!

去看一下自己的环境变量,和这个地方保持一致就ok。

shift+g键,直接到达文件底部。

在文件的末尾系上下面的内容。

export JAVA_HOME=/export/servers/jdk1.8.0_241
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

2.2 输入

vi core-site.xml

需要!特别!注意!!!

下面hadoop01:2181,以及后面的虚拟机名称,需要和自己本地的虚拟机名称对!应!起来!!!

<property>
        <name>fs.defaultFS</name>
        <value>hdfs://ns1</value>
</property>
<property>
        <name>hadoop.tmp.dir</name>
        <value>/export/data/hadoop-HA/hadoop/</value>
</property>
<property>
        <name>ha.zookeeper.quorum</name>
        <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
</property>
<property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
</property>
<property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
</property>

配置完成后,esc冒号wq保存退出。

2.3

vi hdfs-site.xml

输入完成后,仔细复制一下下面的东西,自己复制完成后,叔叔有几个property,确保没有少复制。

并且!!!仔细查看下面有关主机名的地方!!!根据自己的实际主机名进行修改下面的主机名!!!


<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>/export/data/hadoop/namenode</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>/export/data/hadoop/datanode</value>
</property>
<property>
    <name>dfs.nameservices</name>
    <value>ns1</value>
</property>
<property>
    <name>dfs.ha.namenodes.ns1</name>
    <value>nn1,nn2</value>
</property>
<property>
    <name>dfs.namenode.rpc-address.ns1.nn1</name>
    <value>hadoop01:9000</value>
</property>
<property>
    <name>dfs.namenode.http-address.ns1.nn1</name>
    <value>hadoop01:9870</value>
</property>
<property>
    <name>dfs.namenode.rpc-address.ns1.nn2</name>
    <value>hadoop02:9000</value>
</property>
<property>
    <name>dfs.namenode.http-address.ns1.nn2</name>
    <value>hadoop02:9870</value>
</property>
<property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns1</value>
</property>
<property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/export/data/journaldata</value>
</property>
<property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
</property>
<!-- 此处<value></value>的内容较长所以进行了换行处理,在实际操作时不需要换行-->
<property>
    <name>dfs.client.failover.proxy.provider.ns1</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
    <name>dfs.permissions.enable</name>
    <value>false</value>
</property>
<property>
    <name>dfs.ha.fencing.methods</name>
    <value>
        sshfence
        shell(/bin/true)
    </value>
</property>
<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
</property>
<property>
    <name>dfs.ha.fencing.ssh.connect-timeout</name>
    <value>30000</value>
</property>
​
​

修改完成之后保存退出

2.4 依旧是在hadoop目录,输入

vi mapred-site.xml

输入下面内容,请根据自己实际的虚拟机名称进行修改!!!

<property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>
<property>
       <name>mapreduce.jobhistory.address</name>
       <value>hadoop01:10020</value>
</property>
<property>
       <name>mapreduce.jobhistory.webapp.address</name>
       <value>hadoop01:19888</value>
</property>
<property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

修改完成后,保存退出。

2.5

输入

vi yarn-site.xml

这个也比较多,大家注意不要少复制了,并且复制的时候最后记得观察一下结构是否完整,并且,根据自己的实际情况修改主机名!!!

<property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
</property>
<property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>jyarn</value>
</property>
<property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>hadoop01</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>hadoop02</value>
</property>
<property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>hadoop01:2181,hadoop02:2181,hadoop03: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>
<!-- 此处<value></value>的内容较长所以进行了换行处理,在实际操作时不需要换行-->
<property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address.rm1</name>
    <value>hadoop01:8188</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address.rm1</name>
    <value>hadoop01:8130</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address.rm2</name>
    <value>hadoop02:8188</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address.rm2</name>
    <value>hadoop02:8130</value>
</property>

修改完成后,就可以wq退出啦。

2.6

vi workers

将自己的三套主机名输入到文件中,博主的是

hadoop01
hadoop02
hadoop03

输入完成后,保存退出。

3、集群的格式化以及启动环节

那么接下来就分发一下大家配置的环境变量

scp /etc/profile hadoop02:/etc
scp /etc/profile hadoop03:/etc

之后,分发一下hadoop配置

scp -r /export/servers/hadoop-HA/hadoop hadoop02:/export/servers/hadoop-HA
scp -r /export/servers/hadoop-HA/hadoop hadoop03:/export/servers/hadoop-HA

分发完成后,切换到hadoop02和hadoop03

输入,

source /etc/profile

来让分发的命令生效!

这条命令可以多复制两遍哈,没有坏处。

3.2 那么接下来!启动大家的zookeeper集群

zkServer.sh start

启动成功后,再输入下面的命令,来查看一下集群的启动状态

zkServer.sh status

这里引用一下上个文章的内容,出现下面的运行结果,就算是启动成功了,启动没成功的,多找找自己的原因,这么多年有没有努力(不是

3.3 准备启动hadoop高可用集群

一定要启动zookeeper集群出现上面展示的一样的东西才可以进行下一步!

在hadoop01,hadoop02,还有hadoop03中,全部输入下面的命令

hdfs --daemon start journalnode

输入之后,输入jps,查看一下当前进程,有没有成功!!!

启动成功之后,就可以开心的在hadoop01上进行格式化了!

hdfs namenode -format

如果没报错就是格式化成功了。

快说谢谢集群。

接下来就需要进行同步一下namenode。

在hadoop01上输入命令,将namenode同步到hadoop02

只分发hadoop02!!!!!!

scp -r /export/data/hadoop/namenode hadoop02:/export/data/hadoop

3.4 准备格式化ZKFC

注意!!!一定要启动zookeeper集群!!!

输入

hdfs zkfc -formatZK

格式化成功后,就可以开始激动人心的启动集群了

3.5 启动集群

首先切换到hadoop01的sbin目录下,

仅仅在hadoop01上启动就ok,其他的不要启动,不然会冲突。

cd /export/servers/hadoop-HA/hadoop/sbin

输入

./start-all.sh

一键脚本启动集群

就ok了,这里放上123启动成功的结算画面

之后大家可以去浏览器里输入

hadoop01:9870

hadoop02:9870

hadoop01:8188

hadoop02:8188

来查看自己的web页面。

到这里跟着做出来的同学就可以完结撒花了,还有错误的同学请接着往下查看自己的错误在哪个地方。


>NameNode启动不成功问题

解决办法1、删除tmp目录之后重启虚拟机。

cd /tmp
rm -rf hadoop-hadoop/

之后重新从3.3开始。

解决办法2、如果1没有成功的话,极有可能是因为你事先没有提前建立好文件,导致hadoop01在分发的时候,导致文件的错乱,出现这种情况,回到第一步,始吧思密达、

解决办法3、删除掉data和logs目录,然后按照自己删除的目录新建一个,然后!再从3.3开始


>resourcremanager启动不成功问题

resource启动不成功很大的可能是没分发好,查看一下自己的目录,然后重新分发一下,最后一定要

source /etc/profile

让环境变量生效。如果还是没有,建议回到namenode的地方,重新开始、


>DFSZKFailoverController启动不成问题

这个没成功的同学给自己两个大嘴巴子,是不是一开始就说了,在格式化之前启动zookeeper集群,你格式化之前真的启动了吗我请问!!!

回到3.2开始!

标签: debian linux 运维

本文转载自: https://blog.csdn.net/qianwanfuweng/article/details/143226362
版权归原作者 在下不上天 所有, 如有侵权,请联系我们删除。

“Hadoop高可用集群搭建,NameNode启动不成功问题,DFSZKFailoverController启动不成问题”的评论:

还没有评论