hadoop 环境搭建1(转)

hadoop-1.1.0rpm+centos6.364+JDK7搭建全分布式集群的方法

第一步,环境准备.

服务器3台,可以用3个虚拟机代替.

操作系统.

CentOS6.364

hadoop版本

hadoop1.1.0rpm

开始安装

以下所有的操作,都是用root身份执行

以下安装,需要在每台机器上面安装.

下载好jdk-7u9-linux-x64.rpm和hadoop-1.1.0-1.x86_64.rpm

1.首先安装操作系统,并关闭防火墙,

第二步,更改主机名

修改主机名namenode1,datanode1,datanode2

vim/etc/sysconfig/network

(分别修改为)

HOSTNAME=namenode1

HOSTNAME=datanode1

HOSTNAME=datanode2

:wq保存并退出

第三步,修改文件“/etc/hosts

每台主机中的/etc/hosts文件有以下配置

vim/etc/hosts

(添加以下内容)

192.168.10.137namenode1

192.168.10.138datanode1

192.168.10.139datanode2

测试

pingnamenode1

pingdatanode1

pingdatanode2

第四步.安装jdk,rpm版的会自动配置好环境变量

rpm-ivhjdk-7u9-linux-x64.rpm

java-version马上有反应,方便!

第五步.安装hadoop,rpm版的会自动配置部分文件

rpm-ivhhadoop-1.1.0-1.x86_64.rpm

(CentOS6.3默认已经安装了openssh和rsync)

2.2配置Master无密码登录所有Salve

1)SSH无密码原理

Master(NameNode|JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode|Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥追加到所有的Slave的authorized_keys文件上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并从authorized_keys找到Master的公钥,然后用这个公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。

以下操作,在namenode1上面执行

1.创建ssh密钥,就是不用密码登陆目标主机,以下命令直接敲默认回车,不用输入任何信息.

ssh-keygen-trsa

cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys(使本机程序可以通过ssh登录本机)

2.密钥生成完成以后,追加namenode的公钥到其他2台datanode上面,使得namenode能访问其它datanode

cat~/.ssh/id_rsa.pub|sshroot@datanode1"cat>>~/.ssh/authorized_keys"

cat~/.ssh/id_rsa.pub|sshroot@datanode2"cat>>~/.ssh/authorized_keys"

3.修改SSH配置文件,启用RSA认证

vim/etc/ssh/sshd_config

authorized_keys:存放本机要访问的所有目标主机(s)公钥的文件

设置完之后记得重启SSH服务,才能使刚才设置有效。

servicesshdrestart

3.验证ssh不要密码登陆是否成功

sshnamenode1

sshdatanode1

sshdatanode2

如果SSH访问出现问题的话,可以试试下面的

1)修改文件"authorized_keys"

chmod644~/.ssh/authorized_keys

2.3配置所有Slave无密码登录Master

和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)

用root登录datanode1

1.创建ssh密钥,就是不用密码登陆目标主机,以下命令直接敲默认回车,不用输入任何信息.

ssh-keygen-trsa

cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys(使本机程序可以通过ssh登录本机)

2.密钥生成完成以后,追加本机的公钥到其他2台机器上面

cat~/.ssh/id_rsa.pub|sshroot@namenode1"cat>>~/.ssh/authorized_keys"

cat~/.ssh/id_rsa.pub|sshroot@datanode2"cat>>~/.ssh/authorized_keys"

3.修改SSH配置文件,启用RSA认证

vim/etc/ssh/sshd_config

authorized_keys:存放本机要访问的所有目标主机(s)公钥的文件

设置完之后记得重启SSH服务,才能使刚才设置有效。

servicesshdrestart

3.验证ssh不要密码登陆是否成功

sshnamenode1

sshdatanode2

如果SSH访问出现问题的话,可以试试下面的

1)修改文件"authorized_keys"

chmod644~/.ssh/authorized_keys

2.4配置所有Slave无密码登录Master

和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)

用root登录datanode2

1.创建ssh密钥,就是不用密码登陆目标主机,以下命令直接敲默认回车,不用输入任何信息.

ssh-keygen-trsa

cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys(使本机程序可以通过ssh登录本机)

2.密钥生成完成以后,追加本机的公钥到其他2台机器的authorized_keys上

cat~/.ssh/id_rsa.pub|sshroot@namenode1"cat>>~/.ssh/authorized_keys"

cat~/.ssh/id_rsa.pub|sshroot@datanode1"cat>>~/.ssh/authorized_keys"

3.修改SSH配置文件,启用RSA认证

vim/etc/ssh/sshd_config

authorized_keys:存放本机要访问的所有目标主机(s)公钥的文件

设置完之后记得重启SSH服务,才能使刚才设置有效。

servicesshdrestart

3.验证ssh不要密码登陆是否成功

sshnamenode1

sshdatanode1

如果SSH访问出现问题的话,可以试试下面的

1)修改文件"authorized_keys"

chmod644~/.ssh/authorized_keys

---------------------------------------------------------------------------------------------------------------------------------------------

2.5配置Hadoop

每个节点都要进行以下的配置

4.创建必要的目录.首先创建namenode保存namenode元信息的目录.设置为/usr/hadoop/tmp目录下

mkdir-p/usr/hadoop/tmp

5.配置hadoop运行环境.进入/etc/hadoop目录下面,修改hadoop的默认配置.

首先修改master文件.master文件很容易理解错误,master文件是指hadoop机器里面的secondarynamenode.不是指本机(测试用所以配置上,实际上namenode和secondarynamenode放在同一个机子上不能增加可靠性,没什么意义!)

vim/etc/hadoop/master

(改为如下)

192.168.10.137

接着修改slaves文件,salve文件表示此集群的datanode节点.所以在本集群中,datanode如下

vim/etc/hadoop/slave

(改为如下)

192.168.10.138

192.168.10.139

这里的IP实际上可以用主机名来代替,但当网格的DNS出问题的,就不能访问了,直接用IP就不用依赖DNS,提高集群可靠性!

6.设置core-site.xml文件内容如下

<configuration>

<!--globalproperties-->

<property>

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

<value>/usr/hadoop/tmp</value>

</property>

<!--filesystemproperties-->

<property>

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

<value>hdfs://namenode1:9000</value>

</property>

</configuration>

3)配置hdfs-site.xml文件

修改Hadoop中HDFS的配置,配置的备份方式默认为3,这里只有2个datanode,所以数据最大复制2份!

<configuration>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

</configuration>

7.设置mapred-site.xml件内容如下

修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。

<configuration>

<property>

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

<value>namenode1:9001</value>

</property>

</configuration>

8.修改java的运行环境变量,修改hadoop-env.sh如下行的内容如下

vim/etc/hadoop/hadoop-env.sh

修改如下行内容为

exportJAVA_HOME=/usr/java/jdk1.7.0_09

11.设置每个节点上面的服务为自动启动

chkconfig--addhadoop-namenode

chkconfig--addhadoop-jobtracker

chkconfighadoop-namenodeon

chkconfighadoop-jobtrackeron

4.3启动及验证

1)格式化HDFS文件系统

在"Master.Hadoop"上使用普通用户hadoop进行操作。(备注:只需一次,下次启动不再需要格式化)

hadoopnamenode-format

2)启动hadoop

在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。

serviceiptablesstop

不知道为什么root用户访问start-all.sh会提示无权限,所以直接修改了其所在文件夹的访问权限!(谁知道原来回复一下我,谢谢)

chmod-R777/usr/sbin/

启动namenode

start-all.sh

可以通过以下启动日志看出,首先启动namenode接着启动datanode1,datanode2,…,然后启动secondarynamenode。

再启动jobtracker,然后启动tasktracker1,tasktracker2,…。

启动hadoop成功后,在Master中的tmp文件夹中生成了dfs文件夹,在Slave中的tmp文件夹中均生成了dfs文件夹和mapred文件夹。

停止namenode

stop-all.sh

 (2)验证方式二:用"hadoopdfsadmin-report"

用这个命令可以查看Hadoop集群的状态。

4.4网页查看集群

1)访问jobtracker"http:192.168.1.2:50030"

2)访问DFS:"http:192.168.10.137:50070"

到此,Hadoop配置完毕,最大的感悟是rpm方式安装软件真是太方便了!

参考自:http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html和http://www.unxmail.com/read.php?221

相关推荐