Hadoop 2.2.0集群搭建
一、环境说明
1、虚拟机平台:VMware10
2、Linux版本号:ubuntu-12.04.3-desktop-i386
3、JDK:jdk1.7.0_51
4、Hadoop版本号:2.2.0
5、集群节点:3个,各自是hadoopMaster。hadoopSlave1。hadoopSlave2
注明:文中fyzwjd是虚拟机username。
二、准备工作
1、安装虚拟机平台,并新建一个Ubuntu虚拟机,记为hadoopMaster。
2、在hadoopMaster上安装JDK。
Jdk一般有两个版本号:Open JDK、SunJDK,建议使用Sun JDK。安装过程例如以下:
先去 Oracle下载Linux下的JDK压缩包。http://www.oracle.com/technetwork/java/javase/downloads/index.html,下好后直接解压。
进入在存放jdk文件夹的当前文件夹,将解压好的jdk1.7.0_51文件夹用最高权限复移动到/usr/lib/jvm文件夹里,此时即使没有jvm文件夹也能够运行例如以下命令。jvm文件夹将得到创建。
sudo mv jdk1.7.0_51 /usr/lib/jvm/接下来须要环境变量设置,进入当前username的主目录,改动.profile文件。注意。该文件是当前用户的配置文件,假设要对使用计算机的全部用户生效,那么须要设置的文件应该是 /etc/profile。
sudo gedit ~/.profile在末尾加上:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51 exportJRE_HOME=/usr/lib/jvm/jdk1.7.0_51/jre exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$PATH
然后保存关闭。此时在命令行输入java -version将会仍然显示java没有安装。
此时。须要使用source更新下.profile文件:
$ source ~/.profile再次使用java -version命令能够看到例如以下输出:
fyzwjd@ubuntu:~$ java -version java version "1.7.0_51" Java(TM) SE Runtime Environment (build1.7.0_51-b18)到此,已经将oracle jdk配置完毕。
假设之前系统里面已经安装了openjdk。能够使用例如以下方法将默认jdk更改过来:
$ sudo update-alternatives --install/usr/bin/java java /usr/lib/jvm/jdk1.7.0_51/bin/java 300输入sun jdk前的数字就好了
$ sudo update-alternatives --install/usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_51/bin/javac 300 $ sudo update-alternatives --config java $ sudo update-alternatives --config javac3、安装SSH
能够先检查是否已经有ssh,也能够跳过这步,直接安装。
$ sudo ps -ef | grep ssh假设仅仅有 ssh-agent 就须要安装openssh-server了。
$ sudo apt-get install ssh openssh-server4、配置SSH公钥
$ ssh-keygen -t rsa -P "yourPassWord"
$ ssh-keygen -t rsa -P "yourPassWord"ssh-kengen 是用连字符连着的。千万不要分开。另外,password是你的虚拟机password,而不是空(当然,假设你的虚拟机password为空,另当别论)。
5、建立IP和hadoop节点的映射关系
改动etc/hosts文件,在上面增加hadoop节点IP和名称的映射关系。
$ sudo gedit /etc/hosts在当中加上(ip是节点可配置的ip。自己设定):
192.168.32.*** hadoopMaster 192.168.32.*** hadoopSlave1 192.168.32.*** hadoop Slave26、克隆两个Ubuntu虚拟机,作为hadoop的其它两个节点
7、分别改动三个Ubuntu虚拟机的名称
$ sudo gedit /etc/hostname分别将三个虚拟机名称改为:hadoopMaster,hadoopSlave1,hadoopSlave2。
8、改动三个Ubuntu虚拟机的IP
三、配置SSH无password登陆。
其目的是让hadoopMaster免password登陆hadoopSlave1和hadoopSalve2。过程例如以下:
1、在hadoopMaster上创建授权文件authorized_keys
进入~/.ssh/文件夹下运行”ls –a”,发现開始是没有authorized_keys文件的,能够使用下面两种方法来生成:
(1) 将id_rsa.pub追加到authorized_keys授权文件里;
$ cat id_rsa.pub >> authorized_keys(2) 复制id_rsa.pub 为 authorized_keys
$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys完毕后就能够无password登录本机了,能够尝试登陆localhost
$ ssh localhost2、将授权文件复制到hadoopSlave1、hadoopSlave2同样目录下
$ scp authorized_keys fyzwjd@hadoopSlave1:~/.ssh/authorized_keys $ scp authorized_keys fyzwjd@hadoopSlave2:~/.ssh/authorized_keys拷贝过程须要password,拷贝之后就能够免password登陆hadoopSlave1和hadoopSlave2了。
四、安装Hadoop2.2,搭建集群
1、在hadoopMaster上安装hadoop
首先到Apache官网上下载hadoop2.2的压缩文件,将其解压到当前用户的根目录中(home/fyzwjd/)。将解压出的目录改名为hadoop。
$ sudo mv hadoop-2.2.0 hadoop配置之前,先在本地文件系统创建下面目录:~/hadoop/tmp、~/dfs/data、~/dfs/name。
主要涉及的配置文件有7个:都在/hadoop/etc/hadoop目录下,能够用gedit命令对其进行编辑。
~/hadoop/etc/hadoop/hadoop-env.sh ~/hadoop/etc/hadoop/yarn-env.sh ~/hadoop/etc/hadoop/slaves ~/hadoop/etc/hadoop/core-site.xml ~/hadoop/etc/hadoop/hdfs-site.xml ~/hadoop/etc/hadoop/mapred-site.xml ~/hadoop/etc/hadoop/yarn-site.xml(1) 配置文件1:hadoop-env.sh
改动JAVA_HOME值(export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51)
(2) 配置文件2:yarn-env.sh
改动JAVA_HOME值(export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51)
(3) 配置文件3:slaves
hadoopSalve1 hadoopSlave2(4) 配置文件4:core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoopMaster:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/fyzwjd/hadoop/tmp</value> <description>Abasefor other temporary directories.</description> </property> <property> <name>hadoop.proxyuser.fyzwjd.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.fyzwjd.groups</name> <value>*</value> </property> </configuration>(5) 配置文件5:hdfs-site.xml
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoopMaster:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/fyzwjd/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/fyzwjd/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>(6) 配置文件6:mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>hadoopMaster:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoopMaster:19888</value> </property> </configuration>(7) 配置文件7:yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>hadoopMaster:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>hadoopMaster:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>hadoopMaster:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>hadoopMaster:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>hadoopMaster:8088</value> </property> </configuration>2、将hadoop目录复制到hadoopSlave1和hadoopSlave2上。
scp –r/home/fyzwjd/hadoop fyzwjd@hadoopSlave1:~/ scp –r/home/fyzwjd/hadoop fyzwjd@hadoopSlave2:~/五、验证与执行
全部的组件启动和停止服务都在/hadoop/sbin文件夹下。一般启动hadoop前会格式化namenode。详细命令參考例如以下:
进入安装文件夹: cd ~/hadoop/ 格式化namenode:./bin/hdfs namenode –format 启动hdfs: ./sbin/start-dfs.sh 此时在hadoopMaster上面执行的进程有:namenodesecondarynamenode hadoopSlave1和hadoopSlave2上面执行的进程有:datanode
启动yarn: ./sbin/start-yarn.sh 此时在hadoopMaster上面执行的进程有:namenodesecondarynamenoderesourcemanager hadoopSlave1和hadoopSlave2上面执行的进程有:datanode nodemanaget
查看集群状态:./bin/hdfs dfsadmin –report 查看文件块组成: ./bin/hdfsfsck/ -files -blocks 查看HDFS: http://hadoopMaster:50070 查看RM: http:// hadoopMaster:8088