最近研究数据密集型计算相关领域知识,做相关实验时用到MapReduce编程模型,Hadoop是基于MapReduce较成熟的分布式程序架构。本文介绍相关Hadoop环境在linux下搭建的方法。

准备:10台装有ylmf os的机器,相互之间局域网互联,相同的用户名

开始:

从上述10台机器中,选择一台主机(作为主节点,后面用到),接下来大部分的设置以及其它九台机器的设置在此机器上完成。

1.首先安装jdk,如果系统可以连接互联网,可以直接在命令端输入命令,计算机会自动下载,命令为:

sudo apt-get install jdk

输入以后系统会列出jdk相关软件,可根据提示安装。注:安装过程要求输入密码。如果系统不能连接互联网,用户可以自行在其它电脑上下载拷贝过来解压到相关文件夹,本文的安装文件夹在usr\local\java(如果没有java文件夹,新建)

2.接下来配置jdk环境变量,配置方法有别于windows下的配置,Linux下的环境变量配置需要修改etc\profile文件,将相关变量信息填入。具体修改方法为:命令行输入

sudo gedit etc\profile

输入密码,打开profile文件,这里有必要说明一下,如果您的计算机没有gedit软件的话可能系统会报错,您可以有两种方式来解决,第一,安装gedit软件,按上面所述

sudo apt-get install gedit

安装即可。第二,可以利用系统自带的文本编辑软件来打开

sudo vi etc\profile

该软件不如gedit好用。(注意:vi用法,按i键表示开始编辑文本,文本编辑结束后按esc键,在最后一行输入:wq,含冒号,保存。vi其它用法可自己网上问度娘)。然后就是具体的环境变量,打开文件后,输入

export JAVA_HOME=\usr\local\java\jdk1.7(jdk安装的目录)</b>

export CLASSPATH=.:$JAVA_HOME/lib</br>

export PATH=$PATH:$JAVA_HOME/bin

保存以后,检查是否成功,在命令行输入

java -version

如果出现jdk版本,则成功,否则还有其它问题,自己查找。

3.然后安装ssh,安装方法请参见ssh,接下来是生成ssh密钥

先在用户所在文件夹建密钥文件夹,命令为:

cd ~

mkdir .ssh //建立名为.ssh的文件夹

进入.ssh,生成密钥

cd .ssh

ssh-keygen

然后一路回车,直到生成密钥,系统自动生成一个名为id_rsa.pub和id_rsa的文件

然后将.pub文件拷贝到密钥权限文件夹中,命令为:

cp id_rsa.pub authorized_keys

本机ssh安装完成,测试一下

ssh localhost

如果出现要求你确认连接的选项时,证明ssh已经安装完成。

4.接下来的任务是配置hosts文件,配置该文件的目的是将来计算机之间传输时不用再次输入计算机静态地址,打开hosts所在文件夹

sudo gedit /etc/hosts //或者sudo vi /etc/hosts

打开文件后,加入其它9台计算机名称以及预先分配的静态IP,将本机localhost名改为预先分配的计算机名,形如:

c1 192.168.1.101

……

c9 192.168.1.109

保存退出。

5.改hostname,本机的计算机名,原理如上

打开hostname文件

sudo gedit /etc/hostname

将127.0.0.1 localhost 改为 127.0.0.1 c0 保存退出

6.接下来是比较麻烦的一步,麻烦的要放在后面来解决,就是给每台机器分配静态IP,同上,也是打开相关文件,修改配置,该文件也是etc下network中的interfaces文件

sudo gedit /etc/network/interfaces

打开文件以后将以下内容添加到最上面:

auto eth1

iface eth1 inet static

address 192.168.1.* //*代表预先分配好的IP地址

gateway 192.168.1.1

netmask 255.255.255.0

修改完成后文件变为

auto eth1

iface eth1 inet static

address 192.168.1.*

gateway 192.168.1.1

netmask 255.255.255.0

 

auto lo

iface lo inet loopback

完成后保存退出

验证是否修改成功,利用ifconfig查看IP相关信息,该命令如windows下的ipconfig。

然后修改计算机名称,即如上所述/etc/hostname文件中localhost计算机名改为预先设定的名称,如c1。特别要注意的是名称和ip一定要相对应于主节点hosts文件所述。

设置完成9台机器后,本步完成。

7.ip设置完成后,说明机器之间可以传输文件。首先要从主节点发送ssh密钥给所有机器,以便于以后主节点访问其它节点时输入密码的麻烦,发送完成后只要输入对应主机名便可直接进入该机器进行相关操作,不用输入密码。具体操作方法为:

scp authorized_keys 主机名:用户名/home/.ssh,例如:

scp authorized_keys c1:/student/home/.ssh

scp authorized_keys c2:/student/home/.ssh

scp authorized_keys c3:/student/home/.ssh

scp authorized_keys c4:/student/home/.ssh

scp authorized_keys c5:/student/home/.ssh

    scp authorized_keys c6:/student/home/.ssh

    scp authorized_keys c7:/student/home/.ssh

    scp authorized_keys c8:/student/home/.ssh

    scp authorized_keys c9:/student/home/.ssh

8.jdk的发送,将主机上已经安装好的jdk文件发送到其它分机,(由于ubuntu安全设置,只能发送到用户文件夹下,这里设用户文件夹为student)

scp usr/local/java c1:/student/

……

scp usr/local/java c9:/student/

发送完成后修改分节点的jdk配置文件,即/etc/profile文件,将jdk路径改为/student/java/jdk1.7

需要悠九台计算机,这里有一个相对比较简单的方法,利用主机远程登录分机,远程操作。

9.前面所讲的都配置完成以后,开始安装hadoop,hadoop安装文件随处可见,较新的版本为0.20(不明白的去问度娘或者谷姐),下载完成后解压到用户student文件夹。

10.配置hadoop文件夹下conf/hadoop-site.xml文件

sudo gedit /hadoop/conf/hadoop-site.xml

输入如下内容:

<property>

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

<value>hdfs://c0:9000</value>

</property>

<property>

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

<value>c0:9001</value>

</property>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<property>

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

<value>home/hadoop/tmp</value>

</property>

 

11.修改conf/master和conf/salves文件,分别输入主机名和所有分机名。

gedit conf/master

gedit conf/salves

12.拷贝hadoop文件夹到其它分节点。

Scp -r /hadoop c1:/student

Scp -r /hadoop c2:/student

Scp -r /hadoop c3:/student

Scp -r /hadoop c4:/student

Scp -r /hadoop c5:/student

Scp -r /hadoop c6:/student

Scp -r /hadoop c7:/student

Scp -r /hadoop c8:/student

Scp -r /hadoop c9:/student

至此hadoop配置完成。

文章写的稍急,可能还有些漏洞或者不明确的地方,有任何问题可以联系我,在线或者qq:710263209