Hadoop安装配置

硬件环境

共有3台机器,ubuntu 10.04和9.10系统,Java使用的是jdk1.6.0。IP配置如下:

ingteam:192.168.0.1

ing-1:192.168.0.101

ing-2:192.168.0.102

前提:ssh rsync jdk1.6

$sudo apt-get install ssh

$sudo apt-get install rsync 

$sudo apt-get install sun-java6-jdk

 ps:Ubuntu 10.04 LTS弄走了sun-java6-jdk,只有openjdk

ubuntu 10.04安装sun-java6-jdk

$sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"

然后update再安装

务必确保每台机器的主机名和IP地址之间能正确解析

一个很简单的测试办法就是ping一下主机名,若不能正确解析,可以修改/etc/hosts文件,如果该台机器作Namenode用,则需要在hosts文件中加上集群中所有机器的IP地址及其对应的主机名;如果该台机器作Datanode用,则只需要在hosts文件中加上本机IP地址和Namenode机器的IP地址。

以本文为例,ingteam中的/etc/hosts文件看起来就应该是这样的:

127.0.0.0       localhost    

192.168.0.1     ingteam

192.168.0.101   ing-1     

192.168.0.102   ing-2

ing-1中的/etc/hosts文件看起来就应该是这样的:

127.0.0.0       localhost

192.168.0.1     ingteam

192.168.0.101   ing-1   

对于Hadoop来说,在HDFS看来,节点分为Namenode和Datanode,其中Namenode只有一个,Datanode可以是很多;在MapReduce看来,节点又分为Jobtracker和Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很多。

我是将namenode和jobtracker部署在ingteam上,ing-1,ing-2作为datanode和tasktracker。由于Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同的用户名的帐户。 

SSH免密码设置

在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。

首先在ingteam上生成密钥对:

$ssh-keygen  -t  rsa

这个命令将为ingteam上的用户ingteam生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/ingteam/.ssh目录下。然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/home/ingteam/.ssh/authorized_keys文件中,如果机器上已经有authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内容,如果没有authorized_keys这个文件,直接cp或者scp就好了,下面的操作假设各个机器上都没有authorized_keys文件。

[ingteam@ingteam:.ssh]$scp authorized_keys ing-1:/home/ingteam/.ssh/

[ingteam@ing-2:.ssh]$chmod 644 authorized_keys

这一步非常关键,必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的。

接着,在三台机器上都需要对sshd服务进行配置(其实是可以不用配置的,完成了上面的那些操作了以后SSH就已经可以工作了)

至此各个机器上的SSH配置已经完成,可以测试一下了,比如ingteam向dbrg-2发起ssh连接

[ingteam@ingteam:~]$ssh  ing-1

不过,别忘了测试本机ssh  ingteam

环境的配置

  在$HADOOP_HOME/conf/hadoop-env.sh中定义了Hadoop启动时需要的环境变量设置,其中我们至少需要配置JAVA_HOME(Jdk的路径)变量;另外我们一般还需要更改HADOOP_LOG_DIR(Hadoop的日志路径)这个变量,默认的设置是“export HADOOP_LOG_DIR=${HADOOP_HOME}/logs”,一般需要将其配置到一个磁盘空间比较大的目录下。

我的是这样设置的

export  JAVA_HOME=/usr/lib/jvm/java-6-sun

Hadoop核心代码需要配置conf文件夹里面的core-site.xml,hdfs-site.xml,mapread-site.xml,mapred-site.xml,hadoop-env.sh这几个文件。具体各个配置的含义请参考Hadoop帮助文档。

    1.首先编辑各个机器节点(包括master和slave)的core-site.xml文件,命令如下:(Hadoop 文件夹放在home下)

  
  
  
  
  1. <?xml version="1.0"?> 
  2.  
  3. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
  4.  
  5. <!-- Put site-specific property overrides in this file. --> 
  6.  
  7. <configuration> 
  8.  
  9. <property> 
  10.  
  11.     <name>fs.default.name</name> 
  12.  
  13.     <value>hdfs://192.168.0.1:9000</value> 
  14.  
  15.  </property> 
  16.  
  17. </configuration> 

 2.其次编辑各个机器节点(包括master和slave)的hdfs-site.xml,命令如下:

  
  
  
  
  1. <?xml version="1.0"?> 
  2.  
  3. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
  4.  
  5. <!-- Put site-specific property overrides in this file. --> 
  6.  
  7. <configuration> 
  8.  
  9.  <property> 
  10.  
  11.  <name>dfs.name.dir</name> 
  12.  
  13.  <value>/home/hadoop/NameData</value> 
  14.  
  15.  </property> 
  16.  
  17.  <property> 
  18.  
  19.  <name>dfs.permissions</name> 
  20.  
  21.  <value>false</value> 
  22.  
  23.  </property> 
  24.  
  25.  <property> 
  26.  
  27.  <name>dfs.replication</name> 
  28.  
  29.  <value>1</value> 
  30.  
  31.  </property> 
  32.  
  33. </configuration> 

3.再次,编辑各个机器节点(包括master和slave)mapred-site.xml文件,命令如下:

  
  
  
  
  1. <?xml version="1.0"?> 
  2.  
  3. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
  4.  
  5. <!-- Put site-specific property overrides in this file. --> 
  6.  
  7. <configuration> 
  8.  
  9. <property> 
  10.  
  11. <name>mapred.job.tracker</name> 
  12.  
  13. <value>192.168.0.1:9001</value> 
  14.  
  15. </property> 
  16.  
  17. </configuration> 

Masters/Slave文件配置

在master主机上的hadoop/conf/目录下,打开master 文件,把master 主机名添加进去:

192.168.0.1

在master主机上的hadoop/conf/目录下,打开slaves文件,该文件用来指定所有的从节点,一行指定一个主机名,因此slaves文件看起来应该是这样的 

192.168.0.101

192.168.0.102

部署Hadoop

前面讲的这么多Hadoop的环境变量和配置文件都是在dbrg-1这台机器上的,现在需要将hadoop部署到其他的机器上,保证目录结构一致。

$scp  -r  /home/hadoop  ing-1:/home/

$scp  -r  /home/hadoop  ing-2:/home/

至此,可以说,Hadoop已经在各个机器上部署完毕了下面就让我们开始启动Hadoop

启动Hadoop

启动之前,我们先要格式化namenode,先进入~/HadoopInstall/hadoop目录,执行下面的命令

$bin/hadoop  namenode  -format

不出意外,应该会提示格式化成功。如果不成功,就去hadoop/logs/目录下去查看日志文件

下面就该正式启动hadoop啦,在bin/下面有很多启动脚本,可以根据自己的需要来启动。

* start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack

* stop-all.sh 停止所有的Hadoop

* start-mapred.sh 启动Map/Reduce守护。包括Jobtracker和Tasktrack

* stop-mapred.sh 停止Map/Reduce守护

* start-dfs.sh 启动Hadoop DFS守护.Namenode和Datanode

* stop-dfs.sh 停止DFS守护

在这里,简单启动所有守护

$bin/start-all.sh

同样,如果要停止hadoop,则

$bin/stop-all.sh

HDFS操作

运行bin/目录的hadoop命令,可以查看Haoop所有支持的操作及其用法,这里以几个简单的操作为例。

建立目录

$bin/hadoop  dfs  -mkdir  testdir

在HDFS中建立一个名为testdir的目录

复制文件

$bin/hadoop  dfs  -put  /home/dbrg/large.zip  testfile.zip

把本地文件large.zip拷贝到HDFS的根目录/user/dbrg/下,文件名为testfile.zip

查看现有文件

$bin/hadoop  dfs  -ls

你可能感兴趣的:(hadoop,职场,休闲)