B.1 Hadoop安装

B.1.1 JDK安装

安装JDK具体步骤如下。

(1)下载安装JDK

确保可以连接到互联网,从http://www.oracle.com/technetwork/java/javase/downloads页面下载JDK安装包(文件名类似jdk-*-linux-i586.bin,不建议安装1.7版本,因为并不是所有软件都支持1.7)到JDK安装目录(本章假设jdk安装目录均为/usr/lib/jvm/jdk)。

(2)手动安装JDK

在终端下进入JDK安装目录,并输入命令:


sudo chmod u+x jdk-*-linux-i586.bin


修改完权限之后就可以进行安装,在终端输入命令:


sudo-s./jdk-*-linux-i586.bin


安装结束之后就开始配置环境变量。

(3)配置环境变量

输入命令:


sudo gedit/etc/profile


输入密码,打开profile文件。

在文件最下面输入如下内容:


set Java Environment

export JAVA_HOME=/usr/lib/jvm/jdk

export CLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH"

export PATH="$JAVA_HOME/:$PATH"


这一步的意义是配置环境变量,使你的系统可以找到JDK。

(4)验证JDK是否安装成功

输入命令:

java-version

会出现如下JDK的版本信息:


java version"1.6.0_22"

Java(TM)SE Runtime Environment(build 1.6.0_22-b04)

Java HotSpot(TM)Client VM(build 17.1-b03,mixed mode, sharing)


如果出现上述JDK版本信息,说明当前安装的JDK并未设置成Ubuntu系统默认的JDK,接下来还需要手动将安装的JDK设置成系统默认的JDK。

(5)手动设置系统默认JDK

在终端依次输入命令:


sudo update-alternatives—install/usr/bin/java java/usr/lib/jvm/jdk/bin/java 300

sudo update-alternatives—install/usr/bin/javac javac/usr/lib/jvm/jdk/bin/javac 300

sudo update-alternatives—config java


接下来输入java-version就可以看到JDK安装的版本信息。

B.1.2 SSH安装

在终端输入下面的命令:

ssh-version

如果出现类似“OpenSSH_5.1p1 Debian-6ubuntu2,OpenSSL 0.9.8g 19 Oct 2007”的字符串,表示SSH已安装。如果没有输入下面的命令进行安装:


sudo apt-get install ssh


然后再依次输入以下命令完成本机的免密码配置:


ssh-keygen-t dsa-P''-f~/.ssh/id_dsa

cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys


B.1.3 Hadoop安装

Hadoop有三种运行方式:单节点方式、单机伪分布方式与集群方式。前两种方式并不能体现云计算的优势,但是便于程序的测试与调试。

在安装Hadoop之前,先从Hadoop官方网站:

http://www. apache.org/dyn/closer.cgi/Hadoop/core/

下载hadoop-1.0.1.tar.gz并将其解压,本文往下都默认Hadoop解压在/home/u/目录下。

(1)单节点方式安装

安装单节点的Hadoop无须配置,在这种方式下,Hadoop被认为是一个单独的Java进程,这种方式经常用来调试。

(2)单机伪分布方式安装

伪分布式的Hadoop是只有一个节点的集群,在这个集群中,这个节点既是master,也是slave;既是NameNode也是DataNode;既是JobTracker,也是TaskTracker。

配置伪分布的Hadoop需要修改以下几个文件(具体修改内容的含义请参考第二章):

进入Hadoop目录下conf目录,在hadoop-env.sh中添加JAVA安装目录:


export JAVA_HOME=/usr/lib/jvm/jdk

修改core-site.xml内容如下:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

</property>

</configuration>


修改hdfs-site.xml内容如下:


<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

修改mapred-site.xml内容如下:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>localhost:9001</value>

</property>

</configuration>


上面文件都配置结束之后,Hadoop的安装配置也就完成了。

(3)集群方式安装

这里以安装三台主机的小集群为例为读者呈现Hadoop的集群安装。三台主机的IP地址和对应角色安排如下表:

B.1 Hadoop安装 - 图1

安装的具体步骤如下:

1)在三台主机上创建相同的用户,以便Hadoop启动过程中的通信。参考本附录中JDK和SSH的安装,在每台主机上安装JDK和SSH,并配置环境变量。

2)在每台主机上配置主机名和IP地址。打开每个主机的/etc/hosts文件,输入内容:


127.0.0.1 localhost

10.37.128.2 master

10.37.128.3 slave1

10.37.128.4 slave2


需要注意的是,应删除此文件中其他无用信息,防止Hadoop集群启动时slave无法找到master准确的IP地址进行通信,最终导致slave上的进程虽然启动但无法和master上的进程进行通信。

接下来配置每台主机上的/etc/hostname文件,在文件中输入对应的主机名。

3)配置master免密码登录slave,将master的密钥文件复制到各个slave主机的.ssh文件即可。在master主机的终端下输入命令:


scp~/.ssh/authorized_keys slave1:~/.ssh/

scp~/.ssh/authorized_keys slave2:~/.ssh/


命令完成之后可以使用ssh slave1和ssh slave2来测试是否配置成功。

4)修改Hadoop配置文件内容。

在每台主机上进入Hadoop安装目录,向conf/hadoop-env.sh文件中添加JDK安装目录:

export JAVA_HOME=/usr/lib/jvm/jdk

将conf/core-site.xml文件修改成:


<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://master:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/u/tmp</value>

</property>

</configuration>


将conf/hdfs-site.xml文件修改成:


<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>

<configuration>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

</configuration>


将conf/mapred-site.xml文件修改成:


<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>master:9001</value>

</property>

</configuration>


将conf/masters文件修改成:


master


将conf/slaves文件修改成(注意每行只能有一个主机名):


slave1

slave2