Home  >  Article  >  Database  >  Hadoop2.4编译 伪分布安装 集群安装笔记

Hadoop2.4编译 伪分布安装 集群安装笔记

WBOY
WBOYOriginal
2016-06-07 15:37:061101browse

安装hadoop的时候每次重新安装都有些配置会记不太清楚,要去查询很麻烦这次做了个笔记,在这里和大家分享下,如果内容有错误,请指正。因为是从word中复制出来的截的图片都没了,可以从下面链接中下载到word原版!之前没有写博客的习惯,以后会陆续分享一些

安装hadoop的时候每次重新安装都有些配置会记不太清楚,要去查询很麻烦这次做了个笔记,在这里和大家分享下,如果内容有错误,请指正。因为是从word中复制出来的截的图片都没了,可以从下面链接中下载到word原版!之前没有写博客的习惯,以后会陆续分享一些之前的笔记!Hadoop2.4编译 伪分布安装 集群安装笔记

http://pan.baidu.com/s/1gdKdEcb

吃水不忘挖井人,hadoop集群配置相关内容很多都参考了吴超的博客,这里把他的博客的地址也贴出来,里面有很多文章写得很好,建议有兴趣的朋友去看看。

http://www.superwu.cn/author/admin/


1.1    安装虚拟机

1.1.1    安装虚拟机网上教程很多就不写了

1.2    配置虚拟机

1.2.1    修改主机名

1.2.1.1.        查看主机名

[root@hadoop1 ~]# hostname

hadoop1

 

Hadoop2.4编译 伪分布安装 集群安装笔记

1.2.1.2.        修改主机名

[root@hadoop1 ~]# vi /etc/sysconfig/network

 

NETWORKING=yes

HOSTNAME=hadoop1

Hadoop2.4编译 伪分布安装 集群安装笔记

1.3    配置IP地址

Hadoop2.4编译 伪分布安装 集群安装笔记

使用ifconfig命令查看当前网络配置

Ping ip   查看当前主机和目标ip机器是否可以互相访问

telnet ip port  查看当前主机是否可以访问目标机器的port端口

wget http://www.baidu.com  wget命令用于下载文件,直接wget 百度的地址可以用于测试当前主机是否可以访问外网,因为在编译hadoop源码的时候当前机器必须可以访问外网

1.3.1    如果网络有问题则需要重新设置网络

1.3.1.1.        设置虚拟机的网络

Hadoop2.4编译 伪分布安装 集群安装笔记

Hadoop2.4编译 伪分布安装 集群安装笔记

选则桥接模式,并且把桥接到这个选项选择为当前物理机上网用的那个网卡,我使用无线上网的,并且我的有线网络配置都是关闭的,所以这里只有一个选项。

1.3.2    编辑虚拟机ip配置文件

vi /etc/sysconfig/network-scripts/ifcfg-eth0

配置内容如下,建议注释掉所有IPV6相关的配置(在启动resourcemanage的时候可能会报错,我在启动的时候报了一个错吧IPV6相关的配置关掉就好了)

DEVICE="eth0"

BOOTPROTO=static  #静态IP

#IPV6INIT="yes"

NM_CONTROLLED="yes"

ONBOOT="yes"       #启动的时候自动配置网络

TYPE="Ethernet"

#UUID="2d678a8b-6c40-4ebc-8f4e-245ef6b7a969"

NETMASK=255.255.255.0    #子网掩码 和物理机一样

GATEWAY=192.168.1.1      #网关ip和物理机一样

IPADDR=192.168.1.201      #ip地址和物理机在同一个网段

PREFIX=24

DNS1=101.226.4.6           #NDS服务地址   和物理机一样

DEFROUTE=yes

IPV4_FAILURE_FATAL=yes

#IPV6_AUTOCONF=yes

#IPV6_DEFROUTE=yes

#IPV6_FAILURE_FATAL=no

NAME="System eth0"

HWADDR=00:0C:29:92:E5:B7   #MAC地址需要和/etc/udev/rules.d/70-persistent-net.rules 文件中一致

#IPV6_PEERDNS=yes

#IPV6_PEERROUTES=yes

LAST_CONNECT=1397965330

 

1.3.3    配置完重启网卡  

sudo service network restart   (如果sudo命令无法使用设置方法详见附录1

Hadoop2.4编译 伪分布安装 集群安装笔记

1.3.4    如果虚拟机是复制过来的重启网卡可能会报错,

1.3.4.1.        解决方法1

删除rm /etc/udev/rules.d/70-persistent-net.rules

然后重启虚拟机,再重启网卡

1.3.4.2.        解决方法2

查看/etc/udev/rules.d/70-persistent-net.rules文件的内容,有时候这个文件中会有两个SUBSYSTEM配置,删除NAME = "eth*" 只保留NAME = "eth0" 的配置,然后在重启网卡

Hadoop2.4编译 伪分布安装 集群安装笔记

1.3.4.3.        解决方法3

查看/etc/udev/rules.d/70-persistent-net.rules文件的内容,如果只有一个配置 NAME=“ETH1”,并且/etc/sysconfig/network-scripts/ifcfg-eth0中的配置都没问题,使用下面命令

mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1

然后重启网卡

Ps:我遇到过的问题就么多,如果遇到其他问题以上方法都不能搞定就找度娘吧,我也没辙了。

1.4    配置hosts文件(主机名和IP地址映射)

这个文件中配置ip地址和主机名的映射关系,需要把集群中的所有机器的ip和主机名映射都加进来

Hadoop2.4编译 伪分布安装 集群安装笔记

1.5    配置SSH免密码登陆

生成公钥和私钥

ssh-keygen -t rsa

进入 ~/.ssh 目录

cat id_rsa.pub >> authorized_keys

然后使用ssh localhost命令测试ssh是否配置正确

候会出ssh免密的情况,可以按照下面方法

sudo chmod 644 ~/.ssh/authorized_keys

sudo chmod 700 ~/.ssh

Ubuntu测试ssh使用ssh localhost 命令,出现错误提示connect to host localhost port 22:Connection refused

 造成错误的原因可能是ssh-server未安装或者未启ubuntu 11.10 安装openssh-client,但是木有安装server

 运行 ps -e | grep ssh看是否有sshd

 如果没有,server没启,通 /etc/init.d/ssh -start server程,如果提示ssh不存在 那么就是没安装server

  sudo apt-get install openssh-server命令安装即可

1.6    安装JDK

1.6.1    下载jdk

oracle的官网下载最新版的JDK,需要选择linux版的(注意选择是64位和32位版本,视服务器而定)

Jdk下载地址

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Hadoop2.4编译 伪分布安装 集群安装笔记

个人习惯用tar.gz包安装

下载好后把jdk文件上传到服务器,也可以直接在服务器上执行下载

Wget http://download.oracle.com/otn-pub/java/jdk/8u5-b13/jdk-8u5-linux-x64.tar.gz

1.6.2    解压安装

1.6.2.1.        解压

tar –zxvf  jdk-8u5-linux-x64.tar.gz

1.6.2.2.        配置环境变量

(因为真实的现网环境会有很多个用户,每个用户可能需要使用不同的jdk版本所以jdk配置只需要当前用户生效即可)

vi ~/.bashrc

export JAVA_HOME=/home/hadoop/software/jdk1.7.0_51

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$JAVA_HOME/bin: $PATH

1.6.2.3.        验证是否安装成功

Java –version

如果如下图所示能正确显示版本号即为安装成功

Hadoop2.4编译 伪分布安装 集群安装笔记

1.7    安装Maven

1.7.1    下载安装Maven

官方提示Maven版本要在3.0以上,尽量安装最新版的(下面是编译hadoop的软件配置)

JDK 1.6+

* Maven 3.0 or later

* Findbugs 1.3.9 (if running findbugs)

* ProtocolBuffer 2.5.0

* CMake 2.6 or newer

下载maven

Wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.tar.gz

1.7.2    配置Maven

1.7.2.1.        修改仓库地址

${ MAVEN_HOME }/conf/settings.xml文件中找到mirrors节点在中间加入 下面红色部分配置(默认如果不修改的话是使用国外的中央仓库,hadoop在编译的时候maven会下载很多jar文件,国外的中央仓库下载比较慢,这里使用开源中国提供的maven仓库,下载速度比较快一点)

        

               nexus-osc

               *

               Nexus osc

               http://maven.oschina.net/content/groups/public/

        

1.7.2.2.        修改settings.xml中本地仓库目录地址

找到localRepository节点中间的地址改为存放mavne下载文件的目录地址(目录需提前建立,如果不配置此项,默认现在的文件存放在当前用户home目录下的 .me文件夹中)

localRepository>/home/Hadoop/repo

1.7.2.3.        配置环境变量

 .bashrc 文件中加入以下配置

export MAVEN_HOME=/home/hadoop/software/apache-maven-3.1.1

export PATH=$MAVEN_HOME/bin:$PATH

1.7.2.4.        验证是否安装成功

mvn –version

如果如下图所示能正确显示版本号即为安装成功

Hadoop2.4编译 伪分布安装 集群安装笔记

1.8    安装ProtoclBuffer

1.8.1.1.        下载解压

下载地址https://code.google.com/p/protobuf/downloads/list

Wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz

Tar –zxvf protobuf-2.5.0.tar.gz

1.8.1.2.        安装

./configure --prefix=/home/hadoop/software/protobuf

Prefix 参数用于指定安装路径

make

ake install

1.8.1.3.        配置环境变量

export PROTOC_HOME=/home/hadoop/software/protobuf

PATH=$PROTOC_HOME/bin:$PATH

1.8.1.4.        验证是否安装成功

protoc –version

如果如下图能正确显示版本号 即为安装成功

Hadoop2.4编译 伪分布安装 集群安装笔记

1.9    安装CMake

1.9.1    下载解压

下载地址:http://www.cmake.org/cmake/resources/software.html

wget http://221.178.162.232/data4/06/f1/4c/96/df/b6/c5/4e/70/41/4c/48/c4/05/aa/88/cmake-2.8.12.2.tar.gz

解压  tar –zxvf cmake-2.8.12.2.tar.gz

1.9.2    安装

./bootstrap –prefix=/home/hadoop/software/cmake

make

make install

1.9.2.1.        配置环境变量

export CMAKE_HOME=/home/hadoop/software/cmake

PATH=$ CMAKE_HOME/bin:$PATH

1.9.2.2.        验证是否安装成功

cmake –version

如果如下图能正确显示版本号 即为安装成功

Hadoop2.4编译 伪分布安装 集群安装笔记

1.10 安装其他依赖软件

yum install openssl-devel

yum install ncurses-devel

 

1.11 下载hadoop源码

下载地址:http://apache.fayea.com/apache-mirror/hadoop/common/hadoop-2.4.0/

Wget http://apache.fayea.com/apache-mirror/hadoop/common/hadoop-2.4.0/hadoop-2.4.0-src.tar.gz

解压

Tar –zxvf hadoop-2.4.0-src.tar.gz

1.12 编译Hadoop

目录/usr/local/hadoop-2.4.0-src中,执行命令

mvn package -DskipTests -Pdist,native

漫长的等待之后就是见证奇迹的时刻了(maven编译结束提示编译成功的时候),编译后的代码在/usr/local/hadoop-2.2.0-src/hadoop-dist/target下面

验证编译完是不是64位的,我的虚拟机是32位的 所以执行后显示32位,

file lib/native/libh

Hadoop2.4编译 伪分布安装 集群安装笔记

1.13 伪分布式配置

进入cd hadoop-2.4.0/etc/hadoop/

给所有的.sh 文件增加可执行权限

Chmod +x *.sh

1.13.1            修改hadoop-env.sh

vi hadoop-env.sh

找到

export JAVA_HOME=${JAVA_HOME}

修改为

export JAVA_HOME=/home/hadoop/software/jdk1.7.0_51

1.13.2            修改core-site.xml

configuration节点中增加

property>

       name>fs.defaultFSname>

       value>hdfs://hadoop1:9000value>

    property>

 

    property>

       name>hadoop.tmp.dirname>

       value>/home/hadoop/hadoop/hadoop-2.4.0/data/tmpvalue>

    property>

1.13.3            修改mapred-site.xml

mv mapred-site.xml.template mapred-site.xml

vi mapred-site.xml

configuration节点中增加

property>

    name>mapreduce.framework.namename>

    value>yarnvalue>

property>

1.13.4            修改hdfs-site.xml

configuration节点中增加

property>

    name>dfs.replicationname>

    value>1value>

property>

1.13.5            修改yarn-site.xml

configuration节点中增加

property>

    name>yarn.nodemanager.aux-servicesname>

    value>mapreduce_shufflevalue>

property>

 

property>

    name>yarn.resourcemanager.addressname>

    value>hadoop1:8032value>

property>

 

property>

    name>yarn.resourcemanager.resource-tracker.addressname>

    value>hadoop1:8031value>

property>

 

property>

    name>yarn.resourcemanager.admin.addressname>

    value>hadoop1:8033value>

property>

 

property>

    name>yarn.resourcemanager.scheduler.addressname>

    value>hadoop1:8030value>

property>

 

property>

    name>yarn.web-proxy.addressname>

    value>hadoop1:8888value>

property>

 

property>

    name>yarn.nodemanager.aux-services.mapreduce.shuffle.classname>

    value>org.apache.hadoop.mapred.ShuffleHandlervalue>

property>

1.13.6            配置文件附件

Hadoop2.4编译 伪分布安装 集群安装笔记Hadoop2.4编译 伪分布安装 集群安装笔记Hadoop2.4编译 伪分布安装 集群安装笔记Hadoop2.4编译 伪分布安装 集群安装笔记Hadoop2.4编译 伪分布安装 集群安装笔记

1.13.7            启动hadoop

1.13.7.1.    格式化namenode

bin/hadoop namenode –format

1.13.7.2.    启动伪分布式集群

sbin/start-all.sh

查看是否启动成功

jps

Hadoop2.4编译 伪分布安装 集群安装笔记

1.13.7.3.    执行常用Shell命令测试集群

bin/hadoop fs –ls /

1.13.7.4.    使用浏览器访问查看集群状态

http://hadoop1:50070

其中hadoop1namenodehostname  或者直接使用ip也可以

Hadoop2.4编译 伪分布安装 集群安装笔记

查看resourcemanagercluster运行状态

http://hadoop1:8088/cluster

其中hadoop1resourcemanagerhostname  或者直接使用ip也可以(这里是伪分布模式namenoderesourcemanager都在同一台机器上运行,所以都直接用当前这个虚拟机的主机名就可以访问)

Hadoop2.4编译 伪分布安装 集群安装笔记

1.14 配置集群模式

1.14.1            简介

hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作。在hadoop1时代,只有一个NameNode。如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了。这是hadoop1中的单点问题,也是hadoop1不可靠的表现,如图1所示。

Hadoop2.4编译 伪分布安装 集群安装笔记

1

 

hadoop2就解决了这个问题。hadoop2.2.0HDFS的高可靠指的是可以同时启动2NameNode。其中一个处于工作状态,另一个处于随时待命状态。这样,当一个NameNode所在的服务器宕机时,可以在数据不丢失的情况下,手工或者自动切换到另一个NameNode提供服务。

 

这些NameNode之间通过共享数据,保证数据的状态一致。多个NameNode之间共享数据,可以通过Network File System或者Quorum Journal Node。前者是通过linux共享的文件系统,属于操作系统的配置;后者是hadoop自身的东西,属于软件的配置。

 

我们这里讲述使用Quorum Journal Node的配置方式,方式是手工切换。

 

集群启动时,可以同时启动2NameNode。这些NameNode只有一个是active的,另一个属于standby状态。active状态意味着提供服务,standby状态意味着处于休眠状态,只进行数据同步,时刻准备着提供服务,如图2所示。

Hadoop2.4编译 伪分布安装 集群安装笔记

2

 

1.14.2            架构

在一个典型的HA集群中,每个NameNode是一台独立的服务器。在任一时刻,只有一个NameNode处于active状态,另一个处于standby状态。其中,active状态的NameNode负责所有的客户端操作,standby状态的NameNode处于从属地位,维护着数据状态,随时准备切换。

 

两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了,如图3所示。

Hadoop2.4编译 伪分布安装 集群安装笔记

3

 

为了确保快速切换,standby状态的NameNode有必要知道集群中所有数据块的位置。为了做到这点,所有的datanodes必须配置两个NameNode的地址,发送数据块位置信息和心跳给他们两个。

 

对于HA集群而言,确保同一时刻只有一个NameNode处于active状态是至关重要的。否则,两个NameNode的数据状态就会产生分歧,可能丢失数据,或者产生错误的结果。为了保证这点,JNs必须确保同一时刻只有一个NameNode可以向自己写数据。

1.14.3            集群机器职责规划

主机名

Ip

NameNode

ResourceManager

JournalNode

DataNode

NodeManager

Hadoop1

192.168.1.201

 

Hadoop2

192.168.1.202

 

Hadoop3

192.168.1.203

 

1.14.4            配置集群每个机器IP、主机名、host映射、SSH免密码登陆

1.14.5            配置hadoop配置文件

vi hadoop-env.sh

找到

export JAVA_HOME=${JAVA_HOME}

修改为

export JAVA_HOME=/home/hadoop/software/jdk1.7.0_51

1.14.1            修改core-site.xml

configuration节点中增加

这种方法配置简单,推荐使用。

fs.defaultFS 客户端连接HDFS时,默认的路径前缀。如果前面配置了nameservice ID的值是mycluster,那么这里可以配置为授权信息的一部分。

可以在core-site.xml中配置如下

    

       fs.defaultFS

        hdfs://mycluster

    

    

       hadoop.tmp.dir

       /home/hadoop/hadoop/hadoop-2.4.0/data/tmp

dfs.journalnode.edits.dir 这是JournalNode进程保持逻辑状态的路径。这是在linux服务器文件的绝对路径。配置如下

    

       dfs.journalnode.edits.dir

       /home/hadoop/hadoop/hadoop-2.4.0/data/journal

    

1.14.2            修改mapred-site.xml

mv mapred-site.xml.template mapred-site.xml

vi mapred-site.xml

configuration节点中增加

property>

    name>mapreduce.framework.namename>

    value>yarnvalue>

property>

1.14.3            修改hdfs-site.xml

configuration节点中增加

配置集群中的副本数

                dfs.replication

                2

        

dfs.nameservices 命名空间的逻辑名称。如果使用HDFS Federation,可以配置多个命名空间的名称,使用逗号分开即可。

        

                dfs.nameservices

                mycluster

        

dfs.ha.namenodes.[nameservice ID] 命名空间中所有NameNode的唯一标示名称。可以配置多个,使用逗号分隔。该名称是可以让DataNode知道每个集群的所有NameNode。当前,每个集群最多只能配置两个NameNode

       

           dfs.ha.namenodes.mycluster

           hadoop1,hadoop2

       

dfs.namenode.rpc-address.[nameservice ID].[name node ID] 每个namenode监听的RPC地址。如下所示

       

           dfs.namenode.rpc-address.mycluster.hadoop1

           hadoop1:8020

       

       

           dfs.namenode.rpc-address.mycluster.hadoop2

           hadoop2:8020

       

dfs.namenode.http-address.[nameservice ID].[name node ID] 每个namenode监听的http地址。如下所示

       

           dfs.namenode.http-address.mycluster.hadoop1

           hadoop1:50070

       

       

           dfs.namenode.http-address.mycluster.hadoop2

           hadoop2:50070

       

dfs.namenode.shared.edits.dir 这是NameNode读写JNs组的uri。通过这个uriNameNodes可以读写edit log内容。URI的格式"qjournal://host1:port1;host2:port2;host3:port3/journalId"。这里的host1host2host3指的是Journal Node的地址,这里必须是奇数个,至少3个;其中journalId是集群的唯一标识符,对于多个联邦命名空间,也使用同一个journalId。配置如下

       

           dfs.namenode.shared.edits.dir

           qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster

       

dfs.client.failover.proxy.provider.[nameservice ID] 这里配置HDFS客户端连接到Active NameNode的一个java

       

           dfs.client.failover.proxy.provider.mycluster

       org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

       

       

           dfs.ha.automatic-failover.enabled.mycluster

           false

       

dfs.ha.fencing.methods 配置active namenode出错时的处理类。当active namenode出错时,一般需要关闭该进程。处理方式可以是ssh也可以是shell

如果使用ssh,配置如下

       

           dfs.ha.fencing.methods

           sshfence

       

       

           dfs.ha.fencing.ssh.private-key-files

           /home/hadoop/.ssh/id_dsa

       

1.14.4            修改yarn-site.xml

configuration节点中增加

      yarn.nodemanager.aux-services

           mapreduce_shuffle

      

      

       yarn.resourcemanager.hostname

hadoop3

1.14.5            启动集群

以下是我写的一些脚本可以方便快速启动集群,还不是很智能化,增加节点或者主机名不一样都要重新修改脚本

initmycluster.sh  主要实现了 初始化集群的功能(把hadoop1节点的配置文件都同步到hadoop2hadoop3上、删除日志文件、namenode元数据、删除datanote块数据,格式话两个namenode,然后启动集群,比较危险慎用

startmycluster.sh  主要是按顺序启动集群中的服务

stopmycluster.sh  主要是停止集群中的所有服务

Hadoop2.4编译 伪分布安装 集群安装笔记Hadoop2.4编译 伪分布安装 集群安装笔记Hadoop2.4编译 伪分布安装 集群安装笔记

initmycluster文件配置详解

#hadoop1上的配置文件都同步到hadoop2hadoop3

ssh hadoop1 'scp /home/hadoop/hadoop/hadoop-2.4.0/etc/hadoop/*  hadoop2:/home/hadoop/hadoop/hadoop-2.4.0/etc/hadoop/'

ssh hadoop1 'scp /home/hadoop/hadoop/hadoop-2.4.0/etc/hadoop/*  hadoop3:/home/hadoop/hadoop/hadoop-2.4.0/etc/hadoop/'

 

#清空初始化文件和日志文件

ssh hadoop1 'rm -rf /home/hadoop/hadoop/hadoop-2.4.0/data/tmp/*'

ssh hadoop2 'rm -rf /home/hadoop/hadoop/hadoop-2.4.0/data/tmp/*'

ssh hadoop3 'rm -rf /home/hadoop/hadoop/hadoop-2.4.0/data/tmp/*'

ssh hadoop1 'rm -rf /home/hadoop/hadoop/hadoop-2.4.0/logs/*'

ssh hadoop2 'rm -rf /home/hadoop/hadoop/hadoop-2.4.0/logs/*'

ssh hadoop3 'rm -rf /home/hadoop/hadoop/hadoop-2.4.0/logs/*'

 

#启动集群中的 journalnode

ssh hadoop1 '/home/hadoop/hadoop/hadoop-2.4.0/sbin/hadoop-daemon.sh start journalnode'

ssh hadoop2 '/home/hadoop/hadoop/hadoop-2.4.0/sbin/hadoop-daemon.sh start journalnode'

ssh hadoop3 '/home/hadoop/hadoop/hadoop-2.4.0/sbin/hadoop-daemon.sh start journalnode'

#启动hadoo1上的 namenode1

ssh hadoop1 '/home/hadoop/hadoop/hadoop-2.4.0/bin/hdfs namenode -format -clusterId mycluster'

ssh hadoop1 '/home/hadoop/hadoop/hadoop-2.4.0/sbin/hadoop-daemon.sh start namenode'

#s启动hadoop2上的 namenode2

ssh hadoop2 '/home/hadoop/hadoop/hadoop-2.4.0/bin/hdfs namenode -bootstrapStandby'

sleep 10

ssh hadoop2 '/home/hadoop/hadoop/hadoop-2.4.0/sbin/hadoop-daemon.sh start namenode'

sleep 10

#hadoop1上的namenode置为active状态

ssh hadoop1 '/home/hadoop/hadoop/hadoop-2.4.0/bin/hdfs haadmin -failover --forceactive hadoop2 hadoop1'

#启动 datanode

ssh hadoop1 '/home/hadoop/hadoop/hadoop-2.4.0/sbin/hadoop-daemons.sh start datanode'

#启动 yarn(包括hadoop3上的ResourceManagernodemanagerhadoop1hadoop2上的nodemanager

ssh hadoop3 '/home/hadoop/hadoop/hadoop-2.4.0/sbin/start-yarn.sh'

1.14.6            动态增加datanode

1.14.7            切换namenode

ssh hadoop1 '/home/hadoop/hadoop/hadoop-2.4.0/bin/hdfs haadmin -failover --forceactive hadoop2 hadoop1'

可以吧hadoop1 上的namenode切换为active状态,

1.14.8            破坏式实验

结束hadoop1上的namenode 进程然后执行

ssh hadoop1 '/home/hadoop/hadoop/hadoop-2.4.0/bin/hdfs haadmin -failover --forceactive hadoop1 hadoop2'

可以吧hadoop2 上的namenode切换为active状态,

然后在重新启动hadoop1上的namenode 还是可以自动加入到集群中

1.15 附录1

1.15.1   普通用户使用sudo命令

visudo -f /etc/sudoers

root ALL=(ALL) ALL 之后增加

Hadoop  ALL=(ALL) ALL

#hadoop为需要使用sudo命令的用户名

Defaults:hadoop timestamp_timeout=-1,runaspw

//增加普通账户tomsudo权限

//timestamp_timeout=-1 只需验证一次密码,以后系统自动记忆

//runaspw  需要root密码,如果不加默认是要输入普通账户的密码

Ubuntu用户可以把需要用使用sudo命令的用户加入sudo

sudo adduser hadoop sudo

1.16 附录2-常用命令

1.16.1            添加用户

useradd -d /home/hadoop -s /bin/bash -m hadoop

1.16.2            修改密码

passwd hadoop

1.16.3            给脚本添加可执行权限

Chmod +x *.sh

1.16.4            vi编辑器替换命令

:%s/vivian/sky/(等同于 :g/vivian/s//sky/ 替换每一行的第一个 vivian  sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g 替换每一行中所有 vivian  sky

1.16.5            ubuntu vi不能正常使用决绝方法 重装

.执行命令 sudo apt-get remove vim-common
.执行命令 sudo apt-get install vim

 

1.17 用命令行方式关闭CentOS防火墙  

#/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT  

#/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT  

#/etc/rc.d/init.d/iptables save 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn