您的位置:首页 > 大数据 > Hadoop

centOS6.5安装hadoop2.7的分布式部署(三台主机)

2015-05-20 14:34 776 查看
第一步:准备环境

1)主机三台,安装centOS6.5,64位系统

2)分别安装jdk1.7或1.8,64位

3)下载hadoop2.7.0版本

4)下载hadoop的native的64位包,hadoop-native-64-2.6.0.tar

如何下载在我上一篇博客中有。

第二步:创建hadoop用户,设置三台服务器之间的ssh无密码登录

生成公钥密钥对:

[root@systdt /]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
98:3c:31:5c:23:21:73:a0:a0:1f:c6:d3:c3:dc:58:32 root@gifer
The key's randomart image is:
+--[ RSA 2048]----+
|.   E.=.o        |
|.o = @ o .       |
|. * * =          |
| o o o =         |
|  .   = S        |
|       .         |
|                 |
|                 |
|                 |
+-----------------+

看到图形输出,表示密钥生成成功,cd /root/.ssh/目录下多出两个文件

私钥文件:id_raa
公钥文件:id_rsa.pub

将三台虚拟机里(包含它自己的)的公钥文件id_rsa.pub内容放到authorized_keys(一定要有三个)文件中:
举其中一个为例如下:配置SSH无密码登录不懂的请点击查看这篇文章
[root@systdt2 ~]# cd ~/.ssh/
[root@systdt2 .ssh]# ll
total 16
-rw------- 1 root root 1578 Dec 26 19:53 authorized_keys
-rw------- 1 root root 1675 Dec 26 17:40 id_rsa
-rw-r--r-- 1 root root  394 Dec 26 17:40 id_rsa.pub
-rw-r--r-- 1 root root 2359 Dec 26 19:42 known_hosts
[root@systdt2 .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0cumFYUuxCq+sjSP2yBrk0W+Um/39rA1R4tGExfMyajsCrjUAZUZU6X3MWwCs+j17GQ0Ptj7erfY2bOi5VOM5BCtjdK6h2yWacGV77DkUYwip+mFB42ra9Z6zcaEzVGU52/R3timVQlNtQbL4w7UaOLynGJmhhJ+1KueAXUsNpBCbqEEqin7X3KHaa89LHaJT6hd9szoO6nsfSI2WEGgSyYfdPT63/LMsCRrCmvBKTYbFXWE0z18x8+2zMmc8QqbyGmmO24172DAtr13NEbRxT35PaNx0rvgFI/okq9Jy4TXY9c1HUzQFOARrc8G0JVmZsbfgKtHuuGBBZqsFnGeeQ== root@systdt
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAmp21AqbuCUhjtI+iKhOtW7D/cJENROMNNs9myNtdeTdbrTCvzhuDMpTWmvnDxN/wzI9O/MOO6064zlb7kvtRUdq66ARc3Fj/0yS2BTODRZlHY+DrcjUJyP9Eex4rZ+h/PNj5+8YQeba6y1myT3lXQJQEGqw3LgNcQkIvn8YeiB82GeuISgb0X8rNQGUHbIFUCNKbj1JLSGotJJhiuboIGbW6blCfDAB5HO1FxJUpTtdgoLyQgaHxwAEPfgG1Z+Rr/Tmb8mWlEmsZ2tUURsQbREOmHTQbkgEqEVoES10e1YFNKvg0otGaeFvrZshC/Or8gWASOlCO5Dyzc+qAcQ39rw== root@systdt2
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvV89vN/BFcSBquFa49JQ7t6j0t3xKnyiudlrUckngKmRkhuH6cjjjOrrTqcYld0tWGcSuPWpHC3hyFw4wCUAV1FC/+bQ3rkQxvyGySNgPK7f3vD2XQiSwMjyBeT15Ucxkl6oxVSg8DofHQn0GGhNJb/Hzx2fmN5SHBqUaPvCR9MKdSAiV69X6ep5QRi+E04aPnONrOW0YOrzAQGdGkJktYohoGJwiFCDCrK06GVqHCJrnylgrLA4KFLs4pu94EBEB5vK0f4Fod5MHddjDEYdrYExBQo6qDVKDRl7r1kXfRHzIaZoTOWN83WBc1kROLuxPnytUVEBsvUjn5lML1pCxQ== root@apptools01

测试SSH之间是否互相通,如果通了,这步算完成,很重要;

[root@systdt etc]# ssh 10.2.10.27
[root@systdt ~]# ssh 10.2.10.53
[root@systdt2 ~]# ssh 192.168.83.204
Last login: Fri Dec 26 19:42:21 2014 from 10.2.10.27
-bash-4.1#
-bash-4.1#



第三步:先配置一台Master.Hadoop是OK的(10.2.10.27作为主机);

2)修改hadoop用户的环境变量

vi ~/.bash_profile

增加

export JAVA_HOME=/usr/java/jdk1.8.0_45
export HADOOP_HOME=/work/hadoop
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:

3)修改hosts

vi /etc/hosts

修改为

# cat /etc/hosts
10.2.10.27 Master.Hadoop
10.2.10.53 Salve1.Hadoop
192.168.83.204 Salve2.Hadoop

执行使生效

# source ~/.bash_profile

4)进入hadoop的etc的hadoop配置文件目录

cd  /work/hadoop/etc/hadoop

查看该目录下的文件

[*** hadoop]$ ll
total 156
-rw-r--r--. 1 hadoop centadmin  4436 Apr 11 02:51 capacity-scheduler.xml
-rw-r--r--. 1 hadoop centadmin  1335 Apr 11 02:51 configuration.xsl
-rw-r--r--. 1 hadoop centadmin   318 Apr 11 02:51 container-executor.cfg
-rw-r--r--. 1 hadoop centadmin  1106 May 15 16:58 core-site.xml
-rw-r--r--. 1 hadoop centadmin  3670 Apr 11 02:51 hadoop-env.cmd
-rw-r--r--. 1 hadoop centadmin  4264 May 15 17:23 hadoop-env.sh
-rw-r--r--. 1 hadoop centadmin  2598 Apr 11 02:51 hadoop-metrics2.properties
-rw-r--r--. 1 hadoop centadmin  2490 Apr 11 02:51 hadoop-metrics.properties
-rw-r--r--. 1 hadoop centadmin  9683 Apr 11 02:51 hadoop-policy.xml
-rw-r--r--. 1 hadoop centadmin  1304 May 15 17:04 hdfs-site.xml
-rw-r--r--. 1 hadoop centadmin  1449 Apr 11 02:51 httpfs-env.sh
-rw-r--r--. 1 hadoop centadmin  1657 Apr 11 02:51 httpfs-log4j.properties
-rw-r--r--. 1 hadoop centadmin    21 Apr 11 02:51 httpfs-signature.secret
-rw-r--r--. 1 hadoop centadmin   620 Apr 11 02:51 httpfs-site.xml
-rw-r--r--. 1 hadoop centadmin  3518 Apr 11 02:51 kms-acls.xml
-rw-r--r--. 1 hadoop centadmin  1527 Apr 11 02:51 kms-env.sh
-rw-r--r--. 1 hadoop centadmin  1631 Apr 11 02:51 kms-log4j.properties
-rw-r--r--. 1 hadoop centadmin  5511 Apr 11 02:51 kms-site.xml
-rw-r--r--. 1 hadoop centadmin 11237 Apr 11 02:51 log4j.properties
-rw-r--r--. 1 hadoop centadmin   951 Apr 11 02:51 mapred-env.cmd
-rw-r--r--. 1 hadoop centadmin  1383 Apr 11 02:51 mapred-env.sh
-rw-r--r--. 1 hadoop centadmin  4113 Apr 11 02:51 mapred-queues.xml.template
-rw-r--r--. 1 hadoop centadmin  1226 May 15 17:12 mapred-site.xml
-rw-r--r--. 1 hadoop centadmin   758 Apr 11 02:51 mapred-site.xml.template
-rw-r--r--. 1 hadoop centadmin    10 Apr 11 02:51 slaves
-rw-r--r--. 1 hadoop centadmin  2316 Apr 11 02:51 ssl-client.xml.example
-rw-r--r--. 1 hadoop centadmin  2268 Apr 11 02:51 ssl-server.xml.example
-rw-r--r--. 1 hadoop centadmin  2250 Apr 11 02:51 yarn-env.cmd
-rw-r--r--. 1 hadoop centadmin  4606 May 15 17:23 yarn-env.sh
-rw-r--r--. 1 hadoop centadmin  1358 May 15 17:15 yarn-site.xml

修改以下几个文件

core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、hadoop-env.sh、yarn-env.sh
slaves文件稍后修改

5)# vi core-site.xml

# cat core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
&nb
3ff0
sp;             <value>hdfs://Master.Hadoop:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
</configuration>

6)#vi hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>

<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master.Hadoop:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>

7)#vi mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>

<property>
<name>mapreduce.jobtracker.http.address</name>
<value>Master.Hadoop:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master.Hadoop:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>Master.Hadoop:19888</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://Master.Hadoop:9001</value>
</property>
</configuration>

8)#vi yarn-site.xml

<?xml version="1.0"?>
<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master.Hadoop</value>
</property>

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>Master.Hadoop:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>Master.Hadoop:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>Master.Hadoop:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>Master.Hadoop:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master.Hadoop:8088</value>
</property>
</configuration>

9) vi hadoop-env.sh 和 yarn-env.sh 在开头添加如下环境变量(一定要添加切勿少了)

export JAVA_HOME=/usr/java/jdk1.8.0_45

替换hadoop的native包

下载hadoop-native-64-2.6.0.tar包,在我上一篇博客中有记载在哪里下载。

替换lib/native/中的文件。

10)执行"hadoop dfsadmin -report" 命令,回到hadoop的安装目录

#bin/hdfs namenode -format

bin/hadoop dfsadmin -report

到此:单机的server就算是配好了,单机这个时候就可以启动起来的可以看看效果;

第四布:配置Hadoop的集群;

1)先修改10.2.10.27(即:Master.Hadoop)

[root@systdt hadoop]# pwd
/opt/www/hadoop-2.6.0/etc/hadoop
[root@systdt hadoop]# vi slaves
Salve1.Hadoop
Salve2.Hadoop


2)登录:10.2.10.27 将hadoop-2.6.0整个的copy到另外两台机器上面

[root@systdt www]# scp -r /opt/www/hadoop-2.6.0 10.2.10.53:/opt/www/
[root@systdt www]# scp -r /opt/www/hadoop-2.6.0 192.168.83.204:/opt/www/

3)配置两位两台机器上面的环境变量:重复第三步Master.Hadoop机器配置里面的(2,3,10步动作)

实际上的步骤有:配置环境变量、配置主机hosts、检查core-site.xml和hdfs-site.xml(我的namenode不需要启动datanode,且datanode中的hadoop安装路径也不一样)、替换hadoop-native-64-2.6.0.tar文件。执行:

bin/hadoop dfsadmin -report

从服务器的配置完毕。

4)将三台机器的防火墙关闭掉(或设置三台机器间的端口全访问):

[root@systdt www]# service iptables stop

第五步:启动整个集群及其验证:
1)登录到:10.2.10.27 (即:Master.Hadoop的机器上面)

[root@systdt sbin]# pwd
/opt/www/hadoop-2.6.0/sbin
[root@systdt sbin]# start-all.sh

启动hadoop在2.7版本中改为推荐使用sbin/start-dfs.sh、sbin/start-yarn.sh进行启动。

2)验证:

#Master上面的如下:
[root@systdt sbin]# jps
22984 NameNode
23861 Jps
23239 ResourceManager
19766 NodeManager
#Salve1和Salve2上面的如下:
[root@systdt2 .ssh]# jps
609 Jps
30062 DataNode
2024 Bootstrap
30174 NodeManager

第六步:就可以通过浏览器访问了哦
http://10.2.10.27:8088/cluster/nodes

http://10.2.10.27:50070/dfshealth.html#tab-overview


PS:本文中的服务器IP因不能泄漏公司的IP地址,是从网上抄的。另外,搭建hadoop环境时,试图将namenode建在一台主机上,两个datanode建立在另外两台主机上。但namenode和datanode主机上的hadoop的安装目录不一致,导致在启动hadoop时(在namenode上启动),调用datanode的hadoop失败。上网找解决办法,发现没人问过这个问题。擦,我对shell脚本也不是很熟,没办法,将namenode上的hadoop安装目录改为和datanode的一致。启动成功。hadoop的分布式环境搭建好了。

本文的搭建过程,大量参考了该篇技术文章,非常感谢呀!http://www.itnose.net/detail/6182168.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息