Hadoop全分布环境配置过程

来源:互联网 发布:网络店铺铺招商广告语 编辑:程序博客网 时间:2024/05/04 19:07

一、安装Linux操作系统

安装过程略,安装完后对系统做一下更新:$sudo apt-get update

二、修改机器名,并与IP地址绑定

每当Ubuntu安装成功时,我们的机器名都默认为:ubuntu ,但为了以后集群中能够容易分辨各台服务器,需要给每台机器取个不同的名字。机器名由 /etc/hostname文件决定。步骤如下:

1$ sudo gedit /etc/hostname,/etc/hostname文件中的ubuntu改为master。再$ sudo gedit /etc/hosts,将里面的名字也改为master,重启系统后才会生效,或者$sudo source /etc/hostname更新一下文件。其他节点一样修改;

2、测试两台机器之间是否连通:$ ifconfig 查看机器IP地址,$ping 192.168.160.132并在所有的机器上的"/etc/hosts"文件中都要添加如下内容:

192.168.160.128 master

192.168.160.132 slave

3$Ping slave  看看是否绑定成功;

三、Ubuntu下安装JDK

1、将jdk-6u25-linux-i586.bin拷贝到/home/jay目录下:执行命令jay@master:~$ chmod u+x jdk-6u25-linux-i586.bin,将bin文件修改为可执行文件;

2、运行:$./jdk-6u25-linux-i586.bin,安装文件;

3、打开文件:$sudo gedit /etc/profile  添加如下信息:
export JAVA_HOME=/home/jay/jdk1.6.0_25

export JRE_HOME=/home/jay/jdk1.6.0_25/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH   

4、然后$source /etc/profile,使文件内容生效;

5、重启,执行命令:$java -version,查看是否安装成功。若显示:
java version "1.6.0_25"

Java(TM) SE Runtime Environment (build 1.6.0_25-b06)

Java HotSpot(TM) Client VM (build 20.0-b11, mixed mode, sharing),则安装成功。

四、安装ssh服务

ssh可以实现远程登录和管理,是主节点master和各个从几点slave1slave2之间可以互相通信,传输数据。

1、验证SSH安装,在所有节点上都执行$sudo apt-get install ssh,更新安装;$which ssh$which sshd$which ssh-keygen,查看这三个文件是否存在;

2、生成SSH密钥对:使用主节点上的ssh-keygen来生成一个RSA密钥对,jay@master:~$ssh-keygen -t rsa

3生成授权文件jay@master:~$cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys    , $more /home/test/.ssh/id_rsa.pub ,该命令用来查看密钥(可不执行);

4、将主节点上的公钥分布到各从节点:逐一将公钥复制到每个从节点上,$scp ~/.ssh/id_rsa.pub jay@slave:~/.ssh/192.168.160.128 ;

5手动登录到从节点,并设置密钥为授权密钥,如下执行[jay@slave2]$ mkdir ~/.ssh$chmod 700 ~/.ssh$mv ~/.ssh/192.168.160.128 ~/.ssh/authorized_keys$chmod 600 ~/.ssh/authorized_keys;生成该密钥后,可以尝试从主节点登录到目标节点来验证它的准确性:[jay@master]$ ssh 192.168.160.132.或者[jay@master]$ ssh slave

SSH通信原理:namenodedatanode为例子:Namenode作为客户端,要实现无密码公钥认证,连接到服务端datanode上时,需要在namenode上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥发布到datanode上。当namenode通过ssh连接datanode时,datanode就会生成一个随机数并用namenode的公钥对随机数进行加密,并发送给namenodenamenode收到加密数之后再用私钥进行解密,并将解密数回传给datanodedatanode确认解密数无误之后就允许namenode进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端namenode公钥复制到datanode上。

五、安装Hadoop

第一步:将hadoop-0.20.1.tar.gz文件拷贝到/home/jay目录下。

第二步:jay@master:$ tar -xzvf hadoop-0.20.1.tar.gz  //将文件解压。

第三步:jay@master:$ chown jay:jay hadoop-0.20.1//将文件所有者改成jay

第四步:jay@master:$ sudo gedit /etc/profile进入文件将如下信息加到文件里:

export HADOOP_HOME=/home/jay/hadoop-0.20.1

export PATH=$HADOOP_HOME/bin:$PATH

第五步:更改conf目录下的conf/core-site.xml, conf/hdfs-site.xml,conf/mapred-site.xml,conf/hadoop-env.sh,conf/masters,conf/slaves 文件。 

ajay@master:~/home/jay/hadoop-0.20.1/conf/$sudo gedit hadoop-env.sh

进入文件加入如下信息:

export   JAVA_HOME=/home/jay/jdk1.6.0_25

bjay@master:~/home/jay/hadoop-0.20.1/conf/$sudo gedit masters

进入文件加入如下信息:

192.168.160.128

cjay@master:~/home/jay/hadoop-0.20.1/conf/$sudo gedit slaves

进入文件加入如下信息:

192.168.160.132 

djay@master:~/home/jay/hadoop-0.20.1/conf/$sudo gedit core-site.xml 

进入文件加入如下信息:

<configuration>

     <property>

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

      <value>/home/jay/tmp</value>

      <description>A base for other temporary directories.</description>

</property>

<!-- file system properties -->

<property>

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

      <value>hdfs://192.168.160.128:9000</value>

</property>

</configuration>

 

ejay@master:~/home/jay/hadoop-0.20.1/conf/$sudo gedit hdfs-site.xml

进入文件加入如下信息:(replication默认是3,如果不修改,datanode少于三台就会报错)

<configuration>

     <property>

      <name>dfs.replication</name>

      <value>1</value>

     </property>

</configuration>

 

fjay@master:~/home/jay/hadoop-0.20.1/conf/$sudo gedit mapred-site.xml

进入文件加入如下信息:

<configuration>

<property>

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

      <value>192.168.160.128:9001</value>

</property>

</configuration>  

第六步:执行jay@master:~/$ scp hadoop-0.20.1 jay@slave:/home/jay/hadoop-0.20.1   //将文件hadoop-0.20.1拷贝到其它两个虚拟机上就可以了。

六、在单机上运行hadoop自带的wordcount程序

第一步:jay@master:~/hadoop-0.20.1/bin/$ hadoop namenode format   //格式化文件系统,新建一个文件系统;

第二步:jay@master:~/hadoop-0.20.1/$ start-all.sh //启动hadoop的所有守护进程; 

第三步:jay@master:~/hadoop-0.20.1/$ jps   //查看进程,master虚拟机上的结果。要让6个守护进程(namenodedatanodejobtrackertasktrackerjps scendarynamenode)全部启动才可以;slave2 虚拟机上  jay@slave2:~/hadoop-0.20.1/$ jpsslave节点上启动3个守护进程; 

第四步:先在本地磁盘建立两个输入文件file01 file02:执行命令jsj@master:~$ echo Hello World Bye World” > file01jsj@master:~$ echo Hello Hadoop Goodbye Hadoop” > file02

第五步: 先建立个文件夹jay@master:~/hadoop-0.20.1$ hadoop fs -mkdir input

jay@master:~/hadoop-0.20.1$ bin/hadoop fs -put /home/jay/file1 inputTest//把文件file01file02放到hdfs文件系统中;

jay@master:~/hadoop-0.20.1$ bin/hadoop jar hadoop-0.20.1-examples.jar  wordcount inputTest outputTest   //执行wordcount程序。    

第六步:jsj@master:~/hadoop-0.20.1$ hadoop fs -cat outputTest/*  //查看结果:

Bye 1

Goodbye 1

Hadoop 2

Hello 2

World 2

  至此hadoop运行环境已经全部搭建完成。如果要按照此方法搭建请注意每次运行命令的用户和路径。

七、其他说明

1、在eclipse中,我们写完HadoopJava程序后,将项目打成一个jar包,放到hadoop的安装目录下,便可在Hadoop平台下运行了
2、在Eclipse中编写程序之前,先将Hadoop包加入到Java工程中,步骤如下:

新建一个工程,右键--build path--libraries--add library--user library-next--new--ok。点击刚建立的library--add external jars,加入Hadoop中的jar包即可。

3Eclipse安装Hadoop插件方法:

a、在Hadoop-0.20.2包中--contrib--eclipse-plugin--hadoop-0.20.2-eclipse-plugin.jar包放入到Eclipse--plugins中,重启Eclipse

b、新建一个工程,file--new--project--Java project--project name--finishNew--class--name--finish

c、加入Hadoop自带的jar包:工程上右键--build path--configure build path--libraries--add library--user library--next--user library--new--name--ok--add external JARS--Hadoop-0.20.2中的jar--ok--finish--ok

dEclipse中使用Hadoopwindow--open perspective--other--map/reduce。在下方有个大象图标--右键--edit Hadoop location--主机名、用户名、端口号(和conf配置中一致即可)、IP地址--ok

e、运行:在项目中run configurations--arguments设置参数--运行,去Javaworkplace查看结果。

0 0