共计 11683 个字符,预计需要花费 30 分钟才能阅读完成。
Hadoop2.0 集群搭建详解
PS:apache 提供的 hadoop-2.2.0 的安装包是在 32 位操作系统编译的,因为 hadoop 依赖一些 C ++ 的本地库,所以如果在 64 位的操作上安装 hadoop-2.2.0 就需要重新在 64 操作系统上重新编译。
1. 准备工作:(参考伪分布式搭建)
1.1 修改 Linux 主机名
1.2 修改 IP
1.3 修改主机名和 IP 的映射关系
1.4 关闭防火墙
1.5ssh 免登陆
1.6. 安装 JDK,配置环境变量等
2. 集群规划:
PS:在 hadoop2.0 中通常由两个 NameNode 组成,一个处于 active 状态,另一个处于 standby 状态。Active NameNode 对外提供服务,而 Standby NameNode 则不对外提供服务,仅同步 active namenode 的状态,以便能够在它失败时快速进行切换。
hadoop2.0 官方提供了两种 HDFS HA 的解决方案,一种是 NFS,另一种是 QJM。这里我们使用简单的 QJM。在该方案中,主备 NameNode 之间通过一组 JournalNode 同步元数据信息,一条数据只要成功写入多数 JournalNode 即认为写入成功。
通常配置奇数个 JournalNode
这里还配置了一个 zookeeper 集群,用于 ZKFC(DFSZKFailoverController)故障转移,当 Active NameNode 挂掉了,会自动切换 Standby NameNode 为 standby 状态
3. 安装步骤:
3.1. 安装配置 zooekeeper 集群
3.1.1 解压
tar -zxvf zookeeper-3.4.5.tar.gz -C /cloud/
3.1.2 修改配置
cd /cloud/zookeeper-3.4.5/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改:dataDir=/cloud/zookeeper-3.4.5/tmp
在最后添加:
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888
保存退出
然后创建一个 tmp 文件夹
mkdir /cloud/zookeeper-3.4.5/tmp
再创建一个空文件
touch /cloud/zookeeper-3.4.5/tmp/myid
最后向该文件写入 ID
echo 1 > /cloud/zookeeper-3.4.5/tmp/myid
3.1.3 将配置好的 zookeeper 拷贝到其他节点 (首先分别在 hadoop02、
hadoop03 根目录下创建一个 cloud 目录:mkdir /cloud)
scp -r /cloud/zookeeper-3.4.5/ hadoop02:/cloud/
scp -r /cloud/zookeeper-3.4.5/ hadoop03:/cloud/
注意:修改 hadoop02、hadoop03 对应
/cloud/zookeeper-3.4.5/tmp/myid 内容
hadoop02:
echo 2 > /cloud/zookeeper-3.4.5/tmp/myid
hadoop03:
echo 3 > /cloud/zookeeper-3.4.5/tmp/myid
3.2. 安装配置 hadoop 集群
3.2.1 解压
tar -zxvf hadoop-2.2.0.tar.gz -C /cloud/
3.2.2 配置 HDFS(hadoop2.0 所有的配置文件都在
$HADOOP_HOME/etc/hadoop 目录下)
将 hadoop 添加到环境变量中
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.6.0_45
export HADOOP_HOME=/cloud/hadoop-2.2.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
cd /cloud/hadoop-2.2.0/etc/hadoop
3.2.2.1 修改 hadoo-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_45
3,2.2.2 修改 core-site.xml
<configuration>
<!– 指定 hdfs 的 nameservice 为 ns1 –>
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!– 指定 hadoop 临时目录 –>
<property>
<name>hadoop.tmp.dir</name>
<value>/cloud/hadoop-2.2.0/tmp</value>
</property>
<!– 指定 zookeeper 地址 –>
<property>
<name>ha.zookeeper.quorum</name>
<value>
hadoop01:2181,hadoop02:2181,hadoop03:2181
</value>
</property>
</configuration>
3,2.2.3 修改 hdfs-site.xml
<configuration>
<!– 指定 hdfs 的 nameservice 为 ns1,
需要和 core-site.xml 中的保持一致 –>
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!– ns1 下面有两个 NameNode,分别是 nn1,nn2 –>
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!– nn1 的 RPC 通信地址 –>
<property>
<name>
dfs.namenode.rpc-address.ns1.nn1
</name>
<value>hadoop01:9000</value>
</property>
<!– nn1 的 http 通信地址 –>
<property>
<name>
dfs.namenode.http-address.ns1.nn1
</name>
<value>hadoop01:50070</value>
</property>
<!– nn2 的 RPC 通信地址 –>
<property>
<name>
dfs.namenode.rpc-address.ns1.nn2
</name>
<value>hadoop02:9000</value>
</property>
<!– nn2 的 http 通信地址 –>
<property>
<name>
dfs.namenode.http-address.ns1.nn2
</name>
<value>hadoop02:50070</value>
</property>
<!– 指定 NameNode 的元数据在
JournalNode 上的存放位置 –>
<property>
<name>
dfs.namenode.shared.edits.dir
</name>
<value>
qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns1
</value>
</property>
<!– 指定 JournalNode 在本地磁盘存放数据的位置 –>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/cloud/hadoop-2.2.0/journal</value>
</property>
<!– 开启 NameNode 失败自动切换 –>
<property>
<name>
dfs.ha.automatic-failover.enabled
</name>
<value>true</value>
</property>
<!– 配置失败自动切换实现方式 –>
<property>
<name>
dfs.client.failover.proxy.provider.ns1
</name>
<value>
org.apache.hadoop.hdfs.server.namenode.ha.
ConfiguredFailoverProxyProvider
</value>
</property>
<!– 配置隔离机制 –>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!– 使用隔离机制时需要 ssh 免登陆 –>
<property>
<name>
dfs.ha.fencing.ssh.private-key-files
</name>
<value>/root/.ssh/id_rsa</value>
</property>
</configuration>
相关阅读 :
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm
3.2.2.4 修改 slaves
Hadoop01
hadoop02
hadoop03
3.2.3 配置 YARN
3.2.3.1 修改 yarn-site.xml
<configuration>
<!– 指定 resourcemanager 地址 –>
<property>
<name>
yarn.resourcemanager.hostname
</name>
<value>hadoop01</value>
</property>
<!– 指定 nodemanager 启动时加载
server 的方式为 shuffle server –>
<property>
<name>
yarn.nodemanager.aux-services
</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
3.2.3.2 修改 mapred-site.xml
<configuration>
<!– 指定 mr 框架为 yarn 方式 –>
<property>
<name>
mapreduce.framework.name
</name>
<value>yarn</value>
</property>
</configuration>
3.2.4 将配置好的 hadoop 拷贝到其他节点
scp -r /cloud/hadoop-2.2.0/ hadoo02:/cloud/
scp -r /cloud/hadoop-2.2.0/ hadoo03:/cloud/
3.2.5 启动 zookeeper 集群
(分别在 hadoop01、hadoop02、hadoop03 上启动 zk)
cd /cloud/zookeeper-3.4.5/bin/
./zkServer.sh start
查看状态:
./zkServer.sh status
(一个 leader,两个 follower)
3.2.6 启动 journalnode(在 hadoop01 上启动所有 journalnode)
cd /cloud/hadoop-2.2.0
sbin/hadoop-daemons.sh start journalnode
(运行 jps 命令检验,多了 JournalNode 进程)
3.2.7 格式化 HDFS
在 hadoop01 上执行命令:
hadoop namenode -format
格式化后会在根据 core-site.xml 中的 hadoop.tmp.dir
配置生成个文件,这里我配置的是 /cloud/hadoop-2.2.0/tmp,
然后将 /cloud/hadoop-2.2.0/tmp 拷贝到 hadoop02 的
/cloud/hadoop-2.2.0/ 下。
scp -r tmp/ hadoop02:/cloud/hadoop-2.2.0/
3.2.8 格式化 ZK(在 hadoop01 上执行即可)
hdfs zkfc -formatZK
3.2.9 启动 HDFS(在 hadoop01 上执行)
sbin/start-dfs.sh
3.3.10 启动 YARN(在 hadoop01 上执行)
sbin/start-yarn.sh
到此,hadoop2.2.0 配置完毕,可以统计浏览器访问:
http://192.168.1.201:50070
NameNode ‘hadoop01:9000’ (active)
http://192.168.1.202:50070
NameNode ‘hadoop02:9000’ (standby)
验证 HDFS HA
首先向 hdfs 上传一个文件
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
然后再 kill 掉 active 的 NameNode
kill -9 <pid of NN>
通过浏览器访问:http://192.168.1.202:50070
NameNode ‘hadoop02:9000’ (active)
这个时候 hadoop02 上的 NameNode 变成了 active
在执行命令:
hadoop fs -ls /
-rw-r–r– 3 root supergroup 1926 2014-02-06 15:36 /profile
刚才上传的文件依然存在!!!
手动启动那个挂掉的 NameNode
sbin/hadoop-daemon.sh start namenode
通过浏览器访问:http://192.168.1.201:50070
NameNode ‘hadoop01:9000’ (standby)
验证 YARN:
运行一下 hadoop 提供的 demo 中的 WordCount 程序:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce
-examples-2.2.0.jar wordcount /profile /out
OK,大功告成!!!
更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
Hadoop2.0 集群搭建详解
PS:apache 提供的 hadoop-2.2.0 的安装包是在 32 位操作系统编译的,因为 hadoop 依赖一些 C ++ 的本地库,所以如果在 64 位的操作上安装 hadoop-2.2.0 就需要重新在 64 操作系统上重新编译。
1. 准备工作:(参考伪分布式搭建)
1.1 修改 Linux 主机名
1.2 修改 IP
1.3 修改主机名和 IP 的映射关系
1.4 关闭防火墙
1.5ssh 免登陆
1.6. 安装 JDK,配置环境变量等
2. 集群规划:
PS:在 hadoop2.0 中通常由两个 NameNode 组成,一个处于 active 状态,另一个处于 standby 状态。Active NameNode 对外提供服务,而 Standby NameNode 则不对外提供服务,仅同步 active namenode 的状态,以便能够在它失败时快速进行切换。
hadoop2.0 官方提供了两种 HDFS HA 的解决方案,一种是 NFS,另一种是 QJM。这里我们使用简单的 QJM。在该方案中,主备 NameNode 之间通过一组 JournalNode 同步元数据信息,一条数据只要成功写入多数 JournalNode 即认为写入成功。
通常配置奇数个 JournalNode
这里还配置了一个 zookeeper 集群,用于 ZKFC(DFSZKFailoverController)故障转移,当 Active NameNode 挂掉了,会自动切换 Standby NameNode 为 standby 状态
3. 安装步骤:
3.1. 安装配置 zooekeeper 集群
3.1.1 解压
tar -zxvf zookeeper-3.4.5.tar.gz -C /cloud/
3.1.2 修改配置
cd /cloud/zookeeper-3.4.5/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改:dataDir=/cloud/zookeeper-3.4.5/tmp
在最后添加:
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888
保存退出
然后创建一个 tmp 文件夹
mkdir /cloud/zookeeper-3.4.5/tmp
再创建一个空文件
touch /cloud/zookeeper-3.4.5/tmp/myid
最后向该文件写入 ID
echo 1 > /cloud/zookeeper-3.4.5/tmp/myid
3.1.3 将配置好的 zookeeper 拷贝到其他节点 (首先分别在 hadoop02、
hadoop03 根目录下创建一个 cloud 目录:mkdir /cloud)
scp -r /cloud/zookeeper-3.4.5/ hadoop02:/cloud/
scp -r /cloud/zookeeper-3.4.5/ hadoop03:/cloud/
注意:修改 hadoop02、hadoop03 对应
/cloud/zookeeper-3.4.5/tmp/myid 内容
hadoop02:
echo 2 > /cloud/zookeeper-3.4.5/tmp/myid
hadoop03:
echo 3 > /cloud/zookeeper-3.4.5/tmp/myid
3.2. 安装配置 hadoop 集群
3.2.1 解压
tar -zxvf hadoop-2.2.0.tar.gz -C /cloud/
3.2.2 配置 HDFS(hadoop2.0 所有的配置文件都在
$HADOOP_HOME/etc/hadoop 目录下)
将 hadoop 添加到环境变量中
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.6.0_45
export HADOOP_HOME=/cloud/hadoop-2.2.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
cd /cloud/hadoop-2.2.0/etc/hadoop
3.2.2.1 修改 hadoo-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_45
3,2.2.2 修改 core-site.xml
<configuration>
<!– 指定 hdfs 的 nameservice 为 ns1 –>
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!– 指定 hadoop 临时目录 –>
<property>
<name>hadoop.tmp.dir</name>
<value>/cloud/hadoop-2.2.0/tmp</value>
</property>
<!– 指定 zookeeper 地址 –>
<property>
<name>ha.zookeeper.quorum</name>
<value>
hadoop01:2181,hadoop02:2181,hadoop03:2181
</value>
</property>
</configuration>
3,2.2.3 修改 hdfs-site.xml
<configuration>
<!– 指定 hdfs 的 nameservice 为 ns1,
需要和 core-site.xml 中的保持一致 –>
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!– ns1 下面有两个 NameNode,分别是 nn1,nn2 –>
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!– nn1 的 RPC 通信地址 –>
<property>
<name>
dfs.namenode.rpc-address.ns1.nn1
</name>
<value>hadoop01:9000</value>
</property>
<!– nn1 的 http 通信地址 –>
<property>
<name>
dfs.namenode.http-address.ns1.nn1
</name>
<value>hadoop01:50070</value>
</property>
<!– nn2 的 RPC 通信地址 –>
<property>
<name>
dfs.namenode.rpc-address.ns1.nn2
</name>
<value>hadoop02:9000</value>
</property>
<!– nn2 的 http 通信地址 –>
<property>
<name>
dfs.namenode.http-address.ns1.nn2
</name>
<value>hadoop02:50070</value>
</property>
<!– 指定 NameNode 的元数据在
JournalNode 上的存放位置 –>
<property>
<name>
dfs.namenode.shared.edits.dir
</name>
<value>
qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns1
</value>
</property>
<!– 指定 JournalNode 在本地磁盘存放数据的位置 –>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/cloud/hadoop-2.2.0/journal</value>
</property>
<!– 开启 NameNode 失败自动切换 –>
<property>
<name>
dfs.ha.automatic-failover.enabled
</name>
<value>true</value>
</property>
<!– 配置失败自动切换实现方式 –>
<property>
<name>
dfs.client.failover.proxy.provider.ns1
</name>
<value>
org.apache.hadoop.hdfs.server.namenode.ha.
ConfiguredFailoverProxyProvider
</value>
</property>
<!– 配置隔离机制 –>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!– 使用隔离机制时需要 ssh 免登陆 –>
<property>
<name>
dfs.ha.fencing.ssh.private-key-files
</name>
<value>/root/.ssh/id_rsa</value>
</property>
</configuration>
相关阅读 :
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm