Hadoop环境搭建和Hello World

来源:互联网 发布:淘宝密码破解工具 编辑:程序博客网 时间:2024/05/22 11:31



安装过程: 

**************************************************************

一、安装Linux操作系统                                        *
二、在Ubuntu下创建hadoop用户组和用户           *
三、在Ubuntu下安装JDK                                      *
四、修改机器名
五、安装ssh服务
六、建立ssh无密码登录本机
七、安装hadoop
八、在单机上运行hadoop

***************************************************************

二、在Ubuntu下创建hadoop用户组和用户 

这里考虑的是以后涉及到hadoop应用时,专门用该用户操作。用户组名和用户名都设为:hadoop。可以理解为该hadoop用户是属于一个名为hadoop的用户组,这是linux操作系统的知识,如果不清楚可以查看linux相关的书籍。

1、创建hadoop用户组,如图(3)

 

 

2、创建hadoop用户,如图(4)

 

 

3、给hadoop用户添加权限,打开/etc/sudoers文件,如图(5)

 

 

按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限。在root   ALL=(ALL:ALL)   ALL下添加hadoop   ALL=(ALL:ALL)  ALL,如图(6)

 

 

三、在Ubuntu下安装JDK(http://weixiaolu.iteye.com/blog/1401786) 

四、修改机器名
 

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

1、打开/etc/hostname文件,如图(7)

 

 

2、回车后就打开/etc/hostname文件了,将/etc/hostname文件中的ubuntu改为你想取的机器名。这里我取“s15“。重启系统后才会生效。

五、安装ssh服务 

这里的ssh和三大框架:spring,struts,hibernate没有什么关系,ssh可以实现远程登录和管理,具体可以参考其他相关资料。

1、安装openssh-server,如图(8)

 

 

(注:自动安装openssh-server时,可能会进行不下去,可以先进行如下操作:)

 

 

2、更新的快慢取决于您的网速了,如果中途因为时间过长您中断了更新(Ctrl+z),当您再次更新时,会更新不了,报错为:“Ubuntu无法锁定管理目录(/var/lib/dpkg/),是否有其他进程占用它?“需要如下操作,如图(10)

 

 

操作完成后继续执行第1步。

这时假设您已经安装好了ssh,您就可以进行第六步了哦~

六、 建立ssh无密码登录本机 

ssh生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式。
1、创建ssh-key,,这里我们采用rsa方式,如图(11)

 

(注:回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub这两个文件是成对出现的)

2、进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的,如图(12)

 

 

(完成后就可以无密码登录本机了。)

3、登录localhost,如图(13)

 

 

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

4、执行退出命令,如图(14)

 

 

七、安装hadoop 

我们采用的hadoop版本是:hadoop-0.20.203(http://apache.etoak.com/hadoop/common/hadoop-0.20.203.0/ ),因为该版本比较稳定。

1、假设hadoop-0.20.203.tar.gz在桌面,将它复制到安装目录 /usr/local/下,如图(15)

 

 

2、解压hadoop-0.20.203.tar.gz,如图(16)

 

 

3、将解压出的文件夹改名为hadoop,如图(17)

 

 

4、将该hadoop文件夹的属主用户设为hadoop,如图(18)

 

 

5、打开hadoop/conf/hadoop-env.sh文件,如图(19)

 

 

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

 

 

7、打开conf/core-site.xml文件,编辑如下:

 

Java代码  收藏代码
  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3.   
  4. <!-- Put site-specific property overrides in this file. -->  
  5.   
  6. <configuration>  
  7. <property>    
  8.   <name>fs.default.name</name>    
  9.   <value>hdfs://localhost:9000</value>     
  10.  </property>    
  11. </configuration>     

 

8、打开conf/mapred-site.xml文件,编辑如下:

 

Java代码  收藏代码
  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3.   
  4. <!-- Put site-specific property overrides in this file. -->  
  5.   
  6.     <configuration>    
  7.      <property>     
  8.       <name>mapred.job.tracker</name>    
  9.       <value>localhost:9001</value>     
  10.      </property>    
  11.     </configuration>    

 

9、打开conf/hdfs-site.xml文件,编辑如下:

 

Java代码  收藏代码
  1. <configuration>  
  2. <property>  
  3. <name>dfs.name.dir</name>  
  4. <value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value>  
  5. </property>  
  6. <property>  
  7. <name>dfs.data.dir</name>  
  8. <value>/usr/local/hadoop/data1,/usr/local/hadoop/data2</value>  
  9. </property>  
  10. <property>  
  11. <name>dfs.replication</name>  
  12. <value>1</value>  
  13. </property>  
  14. </configuration>  

 

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

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

八、在单机上运行hadoop 

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

 

 

当你看到下图时,就说明你的hdfs文件系统格式化成功了。

 

 

3、启动bin/start-all.sh,如图(23)

 

 

4、检测hadoop是否启动成功,如图(24)

 

 

如果有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker五个进程,就说明你的hadoop单机

版环境配置好了,呵呵,多么宏伟的工程呀!

九、 Linux下的快捷键: 
Ctrl+Alt+t:弹出终端
Ctrl+空格:中英文输入法切换

*************************************************************************************************************************

WordCount示例:

新建几个文件夹:cd hadoop-1.0.0

mkdir playhadoop
mkdir playhadoop/src
mkdir playhadoop/class


编译:
cp ./src/examples/org/apache/hadoop/examples/WordCount.java ./playhadoop/src
cd playhadoop
建立一个编译脚本
vim compile.sh
javac -classpath ../hadoop-core-1.0.0.jar:../lib/commons-cli-1.2.jar -d class/ src/WordCount.java
chmod a+x compile.sh
./compileme.sh

4, 打成jar包
jar -cvf wordcount.jar -C class/ .


5,运行
#在hadoop分布式文件系统下建立一个目录input
./bin/hadoop fs -mkdir input

#从本地文件系统中复制一个要处理的文件到hadoop分布式文件系统中:
./bin/hadoop fs -copyFromLocal ./idata  input

#运行
./bin/hadoop jar playhadoop/wordcount.jar org.apache.hadoop.examples.WordCount input/idata output
注意:这里不要创建output文件夹,输出文件夹会自己创建

查看一下output文件夹
./bin/hadoop fs -ls output
Found 3 items
-rw-r--r--   2 hadoop supergroup          0 2012-04-28 22:08 /user/hadoop/output/_SUCCESS
drwxr-xr-x   - hadoop supergroup          0 2012-04-28 22:07 /user/hadoop/output/_logs
-rw-r--r--   2 hadoop supergroup       1306 2012-04-28 22:08 /user/hadoop/output/part-r-00000

这个 part-r-00000 文件中就是结果
cat一下这个文件:
./bin/hadoop fs -cat output/part-r-00000
有如下输出:
performing      1
permitted.      1
please  2
policies        1
possession,     2
project 1
provides        1
re-export       2
regulations     1
reside  1
restrictions    1
security        1
see     1
software        2
software,       2
software.       2
software:       1



*****************************************************************************************************************************************************************

error:

hduser@saket-K53SM:/usr/local/hadoop$ jps  The program 'jps' can be found in the following packages:  * openjdk-6-jdk  * openjdk-7-jdk Try: sudo apt-get install <selected package>
solution:

That is actually not a Hadoop problem. Hadoop does not use JPS.

If JPS can't be found, you have to put it into your path or create an alias. The JPS executable can be found under $JAVA_HOME/bin/jps.

The alias for example could be:

alias jps='/usr/lib/jvm/jdk1.6.0_43/bin/jps'

Or if you don't care about using JPS, you could instead do a

ps aux | grep java

which will approx. give you the same result ;)


原创粉丝点击