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.pub2)将公钥传给相应的用户
[root@hadoop1 .ssh]# scp id_rsa.pub [email protected]:/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]$
<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 -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.
执行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