Hadoop2.2.0集群安装

  • 格式:docx
  • 大小:881.26 KB
  • 文档页数:14

Hadoop最新安装手册

一、Hadoop2.2.0完全分布式集群平台安装设置:

HDFS HA架构:

在一个典型的 HDFS HA 场景中,通常由两个 NameNode 组成,一个处于 active 状态,另一个处于 standby 状态。Active NameNode 对外提供服务,比如处理来自客户端的 RPC 请求,而 Standby

NameNode 则不对外提供服务,仅同步 active namenode 的状态,以便能够在它失败时快速进行切换。

为了能够实时同步 Active 和 Standby 两个 NameNode 的元数据信息(实际上 editlog),需提供一个共享存储系统,可以是 NFS、QJM(Quorum Journal Manager)或者 Bookeeper,Active Namenode 将数据写入共享存储系统,而 Standby 监听该系统,一旦发现有新数据写入,则读取这些数据,并加载到自己内存中,以保证自己内存状态与 Active NameNode 保持基本一致,如此这般,在紧急情况下 standby 便可快速切为 active namenode。

注意,在 Hadoop 2.0 中,不再需要 secondary namenode 或者 backup namenode,它们的工作由

Standby namenode 承担。

本文将重点介绍基于 QJM 的 HA 解决方案。在该方案中,主备 NameNode 之间通过一组

JournalNode 同步元数据信息,一条数据只要成功写入多数 JournalNode 即认为写入成功。通常配置奇数个(2N+1)个 JournalNode,这样,只要 N+1 个写入成功就认为数据写入成功,此时最多容忍 N-1 个

JournalNode 挂掉,比如 3 个 JournalNode 时,最多允许 1 个 JournalNode挂掉,5 个 JournalNode 时,最多允许 2 个 JournalNode 挂掉。基于 QJM 的 HDFS 架构如下

前提条件:

1、首先在每台Linux电脑上面安装好JDK6或其以上版本,并设置好JAVA_HOME等,测试一下java、javac、jps等命令是否可以在终端使用,如何配置JDK这里就不说了;

2、在每台Linux上安装好SSH,如何安装请参加《Linux平台下安装SSH》。后面会说如何配置SSH无密码登录。

有了上面的前提条件之后,我们接下来就可以进行安装Hadoop分布式平台了。步骤如下:

1、先设定电脑的IP为静态地址:

CentOS下设置IP的方式:

在里面添加下面语句:

里面的IPADDR地址设置你想要的,我这里是10.10.141.14。

设置好后,需要让IP地址生效,运行下面命令:

然后运行ifconfig检验一下设置是否生效:

可见IP地址已经设置为10.10.141.14了。

2、设置各个主机的hostname

CentOS设置hostname步骤如下:

将里面的HOSTNAME修改为你想要的hostname,我这里是取hadoop-active

HOSTNAME=hadoop-active

查看设置是否生效,运行下面命令

3、在所有电脑的/etc/hosts添加以下配置:

其实就是所有电脑的静态IP地址和其hostname的对应关系。

检验所有机器配置是否修改生效,可以用ping来查看

如果上面的命令可以ping通,说明配置成功。

4、设置SSH无密码登陆

终端中执行:

[hadoop@hadoop ~]$ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): //使用默认位置

Enter passphrase (empty for no passphrase): //直接回车

Enter same passphrase again:

Your identification has been saved in /home/hadoop/.ssh/id_rsa.

Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.

The key fingerprint is:

5b:47:52:a7:1e:1c:4d:98:d7:04:eb:d9:0e:5f:dd:3d hadoop@hadoop

The key's randomart image is:

+--[ RSA 2048]----+

| o=++.|

| o+o..|

| . =.. |

| + o o+|

| S . o +E*|

| o . +o|

| o|

| |

| |

+-----------------+

[hadoop@hadoop ~]$

cp /home/hadoop/.ssh/id_rsa.pub /home/hadoop/.ssh/authorized_keys

[hadoop@hadoop ~]$chmod 644 /home/hadoop/.ssh/authorized_keys

[hadoop@hadoop ~]$ ssh localhost //测试是否成功

Last login: Thu Dec 8 14:23:46 2011 from localhost.localdomain

[hadoop@hadoop ~]$ exit

logout

Connection to localhost closed.

cat id_rsa.pub >> .ssh/authorized_keys 5、下载解压hadoop-2.2.0.tar.gz:

下载方式不再赘述,可以直接

运行完上面的命令之后,hadoop-2.2.0.tar.gz文件将会保存在/home/$user/Downloads/hadoop里面,然后解压:

之后将会在hadoop文件夹下面生成hadoop-2.2.0文件夹

6、配置Hadoop的环境变量

在/etc/profile文件的末尾加上以下配置

在终端输入hadoop命令查看Hadoop的环境变量是否生效:

7、编译Hadoop Native包

WARN org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for

your platform… using builtin-java classes where applicable

在网上查了一下发现Apache官网提供的是32位编译的,在64位服务器上会有问题。而且官方竟然没有提供64位版本,要使用得自己编译。

7.1、编译环境准备

经过一次次编译失败,翻遍了谷歌、百度之后终于凑齐了下面这些包。

下面的服务器环境都基于Centos的,其它发行版Linux可能会有不同。

1、GCC、CMake、openssl、JDK。

2、hadoop-2.2.0-src.tar.gz(/releases.html#Download)

3、apache-ant-1.9.2-bin.tar.gz(/bindownload.cgi) 4、apache-maven-3.0.5-bin.tar.gz(/download.cgi)

注意:此处最新的3.1.1版有Bug,缺少依赖包。详细说明如下所示:

https:///confluence/display/MAVEN/AetherClassNotFound

5、findbugs-2.0.2.tar.gz(http://sourceforge.jp/projects/sfnet_findbugs/releases/)

注意:被墙,只能进sourceforge.jp

6、protobuf-2.5.0.tar.gz(https:///p/protobuf/downloads/list)

7、zlib-devel-1.2.3-3.x86_64.rpm

/index.php3/stat/4/idpl/8192688/dir/startcom_5/com/zlib-devel-1.2.3-3.x86_64.rpm.html

7.2、依赖环境配置

安装没啥好说的了,大部分都是tar包,解开就能用。只有protobuf需要make一下。

配置好环境后不要忘了source/etc/profile一下,否则不会生效。

下面的图是环境变量配置明细:

7.3、编译

安装好了上面的依赖后就可以编译了。

mvn package -Pdist,native,docs -DskipTests -Dtar

然后就是漫长的等待,真的很漫长(用小时来做单位的)。当你看到一串SUCCESS的时候,那么恭喜你成功了。

7.4、生成打包文件

到这一步就简单了,在/data/java/tools/hadoop-2.2.0-src/hadoop-dist/target/目录下,可以看到编译好的hadoop-2.2.0.tar.gz包静静的趴在那里,现在你可以进行安装了。 8、修改Hadoop的配置文件

7.1、修改Hadoop的hadoop-env.sh配置文件,设置jdk所在的路径:

找到JAVA_HOME,并设置为服务器JDK所在的绝对路径。

同时配置HADOOP_HOME,设置为服务器hadoop所在的绝对路径。

7.2、依次修改core-site.xml、yarn-site.xml、mapred-site.xml和hdfs-site.xml配置文件,主要分析core-site.xml与hdfs-site.xml配置信息。

Core-site.xml配置如下:

Hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多配置都依赖它。它默认的位置是在/tmp/{$user}下面,但是在/tmp路径下的存储是不安全的,因为linux一次重启,文件就可能被删除。所以建议配置该路径到持久化目录。

fs.defaultFS整个Federation集群对外提供服务的NS逻辑名称,这里的协议不再是hdfs,而是新引入的viewfs,这个逻辑名称会在下面的挂载表中用到。缺省文件服务的协议和NS逻辑名称,和hdfs-site里的对应,此配置替代了1.0里的。

Ha.zookeeper.quorum:”A list of ZooKeeper server addresses, separated by commas, that are to be

used by the ZKFailoverController in automatic failover.”。配置三个Zookper节点,用于ZKFC故障转移。