好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

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

http://pan.baidu测试数据/s/1gdKdEcb

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

http://HdhCmsTestsuperwu.cn/author/admin/


1.1 安装虚拟机

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

1.2 配置虚拟机

1.2.1 修改主机名 1.2.1.1. 查看主机名

[root@hadoop1 ~]# hostname

hadoop1

1.2.1.2. 修改主机名

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

NETWORKING=yes

HOSTNAME=hadoop1

1.3 配置 IP 地址

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

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

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

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

1.3.1 如果网络有问题则需要重新设置网络 1.3.1.1. 设置虚拟机的网络

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

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 )

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" 的配置,然后在重启网卡

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 和主机名映射都加进来

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://HdhCmsTestoracle测试数据/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

个人习惯用 tar.gz 包安装

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

Wget http://download.oracle测试数据/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

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

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

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

1.8 安装 ProtoclBuffer 1.8.1.1. 下载解压

下载地址 https://code.google测试数据/p/protobuf/downloads/list

Wget https://protobuf.googlecode测试数据/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

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

1.9 安装 CMake

1.9.1 下载解压

下载地址: http://HdhCmsTestcmake.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

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

1.10 安装其他依赖软件

yum install openssl-devel

yum install ncurses-devel

1.11 下载 hadoop 源码

下载地址: http://apache.fayea测试数据/apache-mirror/hadoop/common/hadoop-2.4.0/

Wget http://apache.fayea测试数据/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

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.defaultFS name >

value > hdfs://hadoop1:9000 value >

property >

property >

name > hadoop.tmp.dir name >

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

property >

1.13.3 修改 mapred-site.xml

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

vi mapred-site.xml

在 configuration 节点中增加

property >

name > mapreduce.framework.name name >

value > yarn value >

property >

1.13.4 修改 hdfs-site.xml

在 configuration 节点中增加

property >

name > dfs.replication name >

value > 1 value >

property >

1.13.5 修改 yarn-site.xml

在 configuration 节点中增加

property >

name > yarn.nodemanager.aux-services name >

value > mapreduce_shuffle value >

property >

property >

name > yarn.resourcemanager.address name >

value > hadoop1:8032 value >

property >

property >

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

value > hadoop1:8031 value >

property >

property >

name > yarn.resourcemanager.admin.address name >

value > hadoop1:8033 value >

property >

property >

name > yarn.resourcemanager.scheduler.address name >

value > hadoop1:8030 value >

property >

property >

name > yarn.web-proxy.address name >

value > hadoop1:8888 value >

property >

property >

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

value > org.apache.hadoop.mapred.ShuffleHandler value >

property >

1.13.6 配置文件附件

1.13.7 启动 hadoop 1.13.7.1. 格式化 namenode

bin/hadoop namenode –format

1.13.7.2. 启动伪分布式集群

sbin/start-all.sh

查看是否启动成功

jps

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

bin/hadoop fs –ls /

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

http:// hadoop1 :50070

其中 hadoop1 为 namenode 的 hostname 或者直接使用 ip 也可以

查看 resourcemanager 上 cluster 运行状态

http:// hadoop1 :8088/cluster

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

1.14 配置集群模式

1.14.1 简介

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

图 1

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

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

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

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

图 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 所示。

图 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.name name >

value > yarn value >

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 。通过这个 uri , NameNodes 可以读写 edit log 内容。 URI 的格式 "qjournal://host1:port1;host2:port2;host3:port3/journalId" 。这里的 host1 、 host2 、 host3 指的是 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 节点的配置文件都同步到 hadoop2 和 hadoop3 上、删除日志文件、 namenode 元数据、删除 datanote 块数据,格式话两个 namenode ,然后启动集群,比较危险慎用 )

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

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

initmycluster 文件配置详解

# 把 hadoop1 上的配置文件都同步到 hadoop2 和 hadoop3 中

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 上的 ResourceManager 和 nodemanager 、 hadoop1 和 hadoop2 上的 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

// 增加普通账户 tom 的 sudo 权限

//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 查看更多关于Hadoop2.4编译伪分布安装集群安装笔记的详细内容...

  阅读:139次