hadoop学习(4)----hadoop-1.2.1的安装

1 介绍

Hadoop的安装有三种形式:

(1)单机分布模式:所有的服务全部安装在一个节点上,当进行MapReduce时,所有的任务都是放生在一个JVM中的

(2)伪分布式模式:所有的服务全部安装在一个节点上,但进行MapReduce时,任务是分在不同的JVM中的

(3)完全部分模式:NameNod、DataNode等节点是分布在不同的节点上,并且MapReduce的任务在执行时是分布在每个DataNode中的JVM中的,实现处理的并行

下面我们将介绍完全分布模式的安装。安装过程中需要:JDK1.7、Hadoop-1.2.1-bin.tar.gz等工具。

单机分布模式安装请参考:http://freewxy.iteye.com/blog/1027569

伪分布式模式安装请参考:http://blog.itpub.net/8782499/viewspace-1120037/

2 安装

(1)安装配置

使用三个节点,分别列出了三个节点的节点名称、操作系统、位数、内存大小和IP地址

hadoop1 Centos6.6  64位   4G内存   10.1.40.191

hadoop2 Centos6.6  64位   4G内存   10.1.40.192

hadoop3 Centos6.6  64位   4G内存   10.1.40.193
(2)实现SSH免密码登录

Centos6.6自带了ssh服务,因此不需要安装,如果您的节点上没有ssh的话,可以查询相应的安装教程进行安装。

1)生成一个用户的公钥(id_rsa.pub)和私钥(id_rsa)

[root@hadoop1 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
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:
36:64:68:07:5c:b9:0b:ad:ae:1f:fa:80:3c:6a:ce:9a root@Centos
The key's randomart image is:
+--[ RSA 2048]----+
|     .....       |
|      .o.        |
|      o.+.       |
|     ..+o        |
|       oS.       |
| . .  ....       |
|  + ...          |
|.+ . o..         |
|Eo  o+o          |
+-----------------+
[root@hadoop1 ~]# cd .ssh/
[root@hadoop1 .ssh]# ls
id_rsa  id_rsa.pub
2)将公钥传给相应的用户
[root@hadoop1 .ssh]# scp id_rsa.pub root@10.1.40.192:/root/.ssh/authorized_keys
The authenticity of host 'hadoop2 (192.168.149.130)' can't be established.
RSA key fingerprint is 1d:50:e5:a5:bb:e1:b6:34:97:97:b4:a7:73:73:16:5d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'hadoop2,192.168.149.130' (RSA) to the list of known hosts.
root@hadoop2's password: 
id_rsa                                                                                                                                                     100% 1679     1.6KB/s   00:00    
[root@hadoop1 .ssh]#
查看hadoop2节点上的.ssh文件夹

[root@hadoop2 .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub
[root@hadoop2 .ssh]# 
因为hadoop2节点上的root用户有用hadoop1节点root用户的公钥,则hadoop1的root用户可以免密码链接到hadoop2 的root用户上。如果要实现多台节点的相互无密码访问,只要将公钥复制到相应节点的authorized_keys文件中即可。

注意:在hadoop1.2.1安装过程中,要求hadoop的namenode节点能够与所有节点进行相互的访问。因此datanode节点的authorized_keys文件中有所有节点的公钥,包括namenode节点的。而其他datanode节点的authorized_keys文件则至少有namenode节点的公钥。

这里的免密码是制作给root用户的,因为我的hadoop用户已经制作了免密码,所以当您在制作ssh免密码登录时记得注意用户的切换,以保证hadoop能够正常执行。

(2)更改hosts文件

更改每个节点的hosts文件。在hosts文件中存放电脑主机与IP地址的对应关系,起作用相当于DNS服务器。

[hadoop@hadoop1 etc]$ cat hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.1.40.191 hadoop1
10.1.40.192 hadoop2
10.1.40.193 hadoop3
[hadoop@hadoop1 etc]$ ping hadoop3
PING hadoop3 (10.1.40.193) 56(84) bytes of data.
64 bytes from hadoop3 (10.1.40.193): icmp_seq=1 ttl=64 time=0.224 ms
64 bytes from hadoop3 (10.1.40.193): icmp_seq=2 ttl=64 time=0.335 ms
64 bytes from hadoop3 (10.1.40.193): icmp_seq=3 ttl=64 time=0.172 ms
64 bytes from hadoop3 (10.1.40.193): icmp_seq=4 ttl=64 time=0.339 ms
^C
--- hadoop3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3264ms
rtt min/avg/max/mdev = 0.172/0.267/0.339/0.073 ms
(3)安装KDK1.7 64位

下载jdk1.7 64位地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

安装JDK1.7

1)进行JDK的解压和移动

[hadoop@hadoop1 sources]$ tar -zxf jdk-7u75-linux-x64.tar.gz 
[hadoop@hadoop1 sources]$ ls
apache-hive-0.13.1-bin.tar.gz  hbase-0.94.27.tar.gz  jdk-7u75-linux-x64.tar.gz  phoenix-3.3.1-bin.tar.gz  zookeeper-3.4.6.tar.gz
hadoop-1.2.1.tar.gz            jdk1.7.0_75           phoenix-1.2.1-install.tar  pig-0.13.0.tar.gz
[hadoop@hadoop1 sources]$ sudo mv jdk1.7.0_75/ /usr/
2)配置/etc/profile文件

在/etc/profile处配置的环境变量,会在系统中任何一个登录时进行加载,当在/etc/profile配置了java环境后,所有用户都能使用java

JAVA_HOME=/usr/jdk1.7.0_75
CLASSPATH=/usr/jdk1.7.0_75/lib/dt.jar:.:/usr/jdk1.7.0_75/lib/tools.jar:/home/hadoop/phoenix-3.3.1-bin/hadoop1/phoenix-3.3.1-client-hadoop1.jar
PATH=$PATH://usr/jdk1.7.0_75/bin:/usr/jdk1.7.0_75/jre/bin
export PATH JAVA_HOME CLASSPATH

编辑完成后,使用root用户进行source /etc/profile命令使该文件生效,然后重新登录hadoop用户

(4)安装hadoop-1.2.1

1)下载hadoop-1.2.1

下载地址为:http://www.apache.org/dyn/closer.cgi/hadoop/common

可以从该网页给出的多个地址中下载所需要的hadoop-1.2.1

2)解压hadoop-1.2.1

[hadoop@hadoop1 sources]$ ls
apache-hive-0.13.1-bin.tar.gz  hbase-0.94.27.tar.gz  jdk-7u75-linux-x64.tar.gz  phoenix-3.3.1-bin.tar.gz  zookeeper-3.4.6.tar.gz
hadoop-1.2.1.tar.gz            jdk1.7.0_75           phoenix-1.2.1-install.tar  pig-0.13.0.tar.gz
[hadoop@hadoop1 sources]$ tar -zxf hadoop-1.2.1.tar.gz 
[hadoop@hadoop1 sources]$ ls
apache-hive-0.13.1-bin.tar.gz  hadoop-1.2.1.tar.gz   jdk1.7.0_75                phoenix-1.2.1-install.tar  pig-0.13.0.tar.gz
hadoop-1.2.1                   hbase-0.94.27.tar.gz  jdk-7u75-linux-x64.tar.gz  phoenix-3.3.1-bin.tar.gz   zookeeper-3.4.6.tar.gz
[hadoop@hadoop1 sources]$ pwd
/home/hadoop/sources
[hadoop@hadoop1 sources]$ mv hadoop-1.2.1 ../

讲hadoop-1.2.1-bin.tar.gz进行解压,然后移动至用户hadoop的家目录中/home/hadoop中

3)进行hadoop的配置文件的设置

所有的配置文件在/home/hadoop/hadoop-1.2.1/conf/ 文件夹下面,进入到这个文件夹中

[hadoop@hadoop1 conf]$ ls
capacity-scheduler.xml  fair-scheduler.xml          hadoop-policy.xml  mapred-queue-acls.xml  slaves                  taskcontroller.cfg
configuration.xsl       hadoop-env.sh               hdfs-site.xml      mapred-site.xml        ssl-client.xml.example  task-log4j.properties
core-site.xml           hadoop-metrics2.properties  log4j.properties   masters                ssl-server.xml.example
[hadoop@hadoop1 conf]$ 

(A)core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://10.1.40.191:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-1.2.1/tmp</value>
</property>
</configuration>
fs.default.name属性:设定hdfs文件系统的入口位置,这里设定为hadoop1节点的9000号端口

hadoop.tmp.dir属性:hadoop1.x在运行过程中的数据(namenode的元数据等、datanode的数据块等)都是放在tmp文件中,默认的tmp文件是在系统文件/tmp文件中,该文件的特点是,当系统重新启动时,/tmp中的所有文件被清空,所以为了保留数据将tmp文件改到hadoop-1.2.1的文件中。

(B)hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

dfs.replication属性:hadoop的高安全性就是hadoop的冗余机制,意思就是将一份数据复制多份后并分块放在不同的节点上,如果一个数据块被破坏后,其他节点上也有该数据块的备份,dfs.replication属性就是定义数据备份多少份。

(C)mapred-site.xml

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>10.1.40.191:9001</value>
</property>
</configuration>
maprep.job.tracker属性:MapReduce任务的进入地址。

(D)hadoop-env.sh

将hadoop-env.sh文件中的JAVA_HOME进行相应的设置

(E)master和slave

masters文件中存放的是namenode街低昂的IP地址,slaves文件中存放的是datanode节点中的IP地址

[hadoop@hadoop1 conf]$ cat masters 
10.1.40.191
[hadoop@hadoop1 conf]$ cat slaves 
10.1.40.192
10.1.40.193

当这些文件全部配置完成以后,然后通过scp命令将hadoop-1.2.1文件复制到每一个节点上,然后格式化整个hdfs

scp -r hadoop-1.2.1/ hadoop2:/home/hadoop/
scp -r hadoop-1.2.1/ hadoop3:/home/hadoop/
hadoop namenode -format
当出现下面这句话表示格式化成功了

14/03/27 10:46:41 INFO common.Storage: Storage directory /tmp/hadoop-myhadoop/dfs/name has been successfully formatted.

(5)启动Hadoop集群

执行hadoop-1.2.1文件下bin目录中的start-all.sh脚本即可

[hadoop@hadoop1 ~]$ cd hadoop-1.2.1/
[hadoop@hadoop1 hadoop-1.2.1]$ cd bin/
[hadoop@hadoop1 bin]$ ls
hadoop            hadoop-daemon.sh   rcc        start-all.sh       start-dfs.sh               start-mapred.sh  stop-balancer.sh  stop-jobhistoryserver.sh  task-controller
hadoop-config.sh  hadoop-daemons.sh  slaves.sh  start-balancer.sh  start-jobhistoryserver.sh  stop-all.sh      stop-dfs.sh       stop-mapred.sh
[hadoop@hadoop1 bin]$ ./start-all.sh 
如果出现相应的继承则表示其群成功:

namenode节点:

[hadoop@hadoop1 ~]$ jps
7381 NameNode
7568 SecondaryNameNode
7656 JobTracker
6523 Jps
[hadoop@hadoop1 ~]$ 
datanode节点:

[hadoop@hadoop2 ~]$ jps
5223 TaskTracker
23895 Jps
5111 DataNode
[hadoop@hadoop2 ~]$

当出现以上几个进程时,则表示hadoop集群已经成功安装

(6)总结

我们在以上的配置文件中只是简简单单的配了几个属性而已,其实hadoop有很多默认的属性配置,如果想要详细了解这些文件中的属性及其配置,请打开下面的链接:

http://blog.csdn.net/jediael_lu/article/details/38680013

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值