最近没事,研究下ubuntu 配置hadoop!

   ubuntu版本:64 bit   11.04

   hadoop版本: hadoop1.2.1

一、在Ubuntu下创建hadoop用户组和用户;

1. 创建hadoop用户组;

sudo addgroup hadoop

2. 创建hadoop用户;

sudo adduser -ingroup hadoop hadoop

3. 给hadoop用户添加权限,打开/etc/sudoers文件;

sudo gedit /etc/sudoers

按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限。

在root   ALL=(ALL:ALL)   ALL下添加

hadoop   ALL=(ALL:ALL)  ALL


二、在Ubuntu下安装JDK

下载适合自己系统的jdk并配置JAVA环境变量,


三、安装ssh服务 


sudo apt-get install ssh openssh-server



四、建立ssh无密码登录本机 1.换成hadoop用户


su - hadoop



2.创建ssh-key


ssh-keygen -t rsa


cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  //将id_rsa.pub追加到authorized_keys授权文件


chmod 777 ~/.ssh/authorized_keys    


scp ~/.ssh/id_rsa.pub hadoop@localhost:~/



3.登录localhost;


ssh localhost


( 注:当ssh远程登录到其它机器后,现在你控制的是远程的机器,需要执行退出命令才能重新控制本地主机。)



4.执行退出命令;


exit


五、安装hadoop

我们采用的hadoop版本是:hadoop-1.2.1(http://www.apache.org/dyn/closer.cgi/hadoop/common/


1.假设hadoop-1.2.1.tar.gz在/work,将它复制到安装目录 /usr/local/下;    


sudo cp hadoop-1.2.1.tar.gz /usr/local/


2.解压hadoop-0.20.203.tar.gz;


cd /usr/local


sudo tar -zxf hadoop-1.2.1.tar.gz


3. 将解压出的文件夹改名为hadoop;


sudo mv hadoop-1.2.1 hadoop


4.将该hadoop文件夹的属主用户设为hadoop,


sudo chown -R hadoop:hadoop hadoop


5.打开hadoop/conf/hadoop-env.sh文件;    


sudo gedit hadoop/conf/hadoop-env.sh



6.配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然后加上本机jdk的路径);


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



7.打开conf/core-site.xml文件;


sudo gedit hadoop/conf/core-site.xml


编辑如下:property后面需要手工敲    


<?xml version="1.0"?>


<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>                                                                                          


<!-- Put site-specific property overrides in this file. -->                                                                                                          


<configuration>


  <property>  


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


    <value>hdfs://localhost:9000</value>   


  </property>  


</configuration>



8. 打开conf/mapred-site.xml文件;


sudo gedit hadoop/conf/mapred-site.xml


编辑如下property后面需要手工敲:    


<?xml version="1.0"?>


<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>


 <!-- Put site-specific property overrides in this file. -->


    <configuration>  


     <property>   


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


      <value>localhost:9001</value>   


     </property>  


    </configuration>

9. 打开conf/hdfs-site.xml文件;    

sudo gedit hadoop/conf/hdfs-site.xml


编辑如下:    


<configuration>


  <property>


    <name>dfs.name.dir</name>


    <value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value>


  </property>



  <property>


    <name>dfs.data.dir</name>


    <value>/usr/local/hadoop/data1,/usr/local/hadoop/data2</value>


  </property>



  <property>


    <name>dfs.replication</name>


    <value>2</value>


  </property>


</configuration>



10.打开conf/masters文件,添加作为secondarynamenode的主机名,作为单机版环境,这里只需填写 localhost


sudo gedit hadoop/conf/masters



11.打开conf/slaves文件,添加作为slave的主机名,一行一个。作为单机版,这里也只需填写 localhost


sudo gedit hadoop/conf/slaves


 


六、在单机上运行hadoop


1.进入hadoop目录下,格式化hdfs文件系统,初次运行hadoop时一定要有该操作,    


cd /usr/local/hadoop/


bin/hadoop namenode -format


注:可以在/etc/profile中导入如下:


$ export HADOOP_INSTALL=/usr/local/hadoop


$ export PATH=$PATH:$HADOOP_INSTALL/bin



2.启动bin/start-all.sh    


bin/start-all.sh



3.检测hadoop是否启动成功


jps


如果有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker五个进程,就说明你的hadoop单机版环境配置好了,然后可以通过firefox浏览器查看,使用http://localhost:50030/



注意:Hadoop的各组件都可以用xml文件进行配置。


一般配置的话,主要是三个配置文件(全在$HADOOP_INSTALL的conf目录):


    core-site.xml:用于配置Common组件的属。


    hdfs-site.xml:用于配置HDFS的属性,


    HDFS顾名思义Hadoop Distributed File System,Hadoop分布式文件系统。


    mapred-site.xml:用于配置MapReduce属性。



在Hadoop的早期版本中,只有一个配置文件来配置这三项,叫hadoop_site.xml的配置文件,后期开始分为三个,一一对应个组件。属性内容不变,仅仅是分开。


另外,在docs目录中还有对应的三个html文件,分别保存着各组件的默认设置。



Hadoop的三种运行模式:


第一:独立模式(standalone)或者本地模式(local model)


此模式无需守护进程,所有的程序都在单个的虚拟机上运行。


由于在本地模式下测试和调试MapReduce程序很方便,所以一般来说比较适用于开发阶段。


第二:伪分布模式(pseudo-distributed model)


顾名思义,一个模拟的小规模的集群,Hadoop守护进程运行在本地环境中。一般用作测试环境


第三:全分布模式(fully distributed model)


这才是真实的,Hadoop守护进程运行在真正的集群环境。一般作为产品环境。



注:在无论哪个模式下去运行Hadoop都需要关注两个重要因素:


1.是否启动Hadoop守护进程,2.是否已经正确配置各属性。



下面这个表里简单列举了三种模式下的所需的最小属性配置集合:

组件名称

属性名称

独立模式

伪分布模式

全分布模式

Common

fs.default.name

file:///

(默认)

hdfs://localhost/

hdfs://namenode/

HDFS

dfs.replication

N/A

1

3

(默认)

MapReduce

mapred.job.tracker

local

(默认)

localhost:8021

jobtracker:8021

 

三种模式下的配置:

本机模式:

一般Hadoop安装后默认属性就是本地模式(独立模式),所以一般来说,不用进行更多的配置。

三个配置文件内容如下:

-----core-site.xml-----

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

   <!-- Put site-specific property overrides in this file. -->

   <configuration>

   </configuration>

<?xml version="1.0"?>

-----mapred-site.xml-----

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

</configuration>

-----mapred-site.xml-----

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

</configuration>


伪分布模式:

三个配置配置文件内容如下:

-----core-site.xml-----

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

   <property>

fs.default.name</name>

hdfs://localhost/</value>

   </property>

</configuration>

<?xml version="1.0"?>

-----mapred-site.xml-----

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

   <property>

dfs.replication</name>

<value>1</value>

   </property>

</configuration>

-----mapred-site.xml-----

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

   <property>

mapred.job.tracker </name>

localhost:8021</value>

   </property>

</configuration>


全分布模式:

三个配置配置文件内容如下:

-----core-site.xml-----

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

   <property>

fs.default.name</name>

hdfs://namenode/</value>

   </property>

</configuration>

<?xml version="1.0"?>

-----mapred-site.xml-----

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

   <property>

dfs.replication</name>

<value>3</value>

   </property>

</configuration>

-----mapred-site.xml-----

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

   <property>

mapred.job.tracker </name>

jobtracker:8021 </value>

   </property>

</configuration>