>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开始!
版权归原作者 在下不上天 所有, 如有侵权,请联系我们删除。