来自《Hadoop权威指南》第二版 - Hello Hadoop!云计算开发环境搭建

javac WordCount.java -d /home/你的用户名/WordCount

0. 参考
《Hadoop权威指南》第二版 附录A
1. 运行环境

Ubuntu 8.04
JDK6

2. 软件包
hadoop-0.20.2.tar.gz
http://labs.renren.com/apache-mirror/hadoop/core/
3. 单机模式步骤
Step1. 启动Ubuntu 8.04,打开终端。安装JDK 1.6 并键入java命令测试

sudo -s
sudo apt-get install sun-java6-jdk sun-java6-jre

Step2. 设置系统路径JAVA_HOME,(使用export命令行声明的变量在关闭shell时失效,所以请自行修改把export语句加到~/.bashrc

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

Step3. 解压hadoop-0.20.2.tar.gz到路径 /home/你的用户名/hadoop-0.20.2

export HADOOP_INSTALL=/home/你的用户名/hadoop-0.20.2

export PATH=$PATH:$HADOOP_INSTALL/bin
测试

hadoop version

Step4. 编译自带的例子WordCount.java, 在路径/home/你的用户名/hadoop-0.20.2/src/examples/org/apache/hadoop/examples下面。

编译前去掉源文件中的包名称,即注释掉第一行。

//package org.apache.hadoop.examples;


添加编译所需的CLASS_PATH路径:

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$HADOOP_INSTALL/hadoop-0.20.2-core.jar:$HADOOP_INSTALL/lib/commons-cli-1.2.jar

建一个文件夹存放编译的class文件,/home/你的用户名/WordCount,开始编译:


编译完后在/home/admin/WordCount目录会发现三个class文件WordCount.class,WordCount$Map.class,WordCount$Reduce.class。

cd /home/admin/WordCount

然后执行:

jar cvf WordCount.jar *.class

就会生成 WordCount.jar 文件。

Step5. 构造一些输入数据,input1.txt和input2.txt的文件里面是一些单词,放到jar同一层目录。如下:

[admin@host WordCount]$ cat input1.txt
Hello, i love china
are you ok?
[admin@host WordCount]$ cat input2.txt
hello, i love word
You are ok

在hadoop上新建目录,和put程序运行所需要的输入文件:

hadoop fs -mkdir /tmp/input
hadoop fs -mkdir /tmp/output
hadoop fs -put input1.txt /tmp/input/
hadoop fs -put input2.txt /tmp/input/

Step6.  运行程序,会显示job运行时的一些信息:

hadoop jar WordCount.jar WordCount /tmp/input /tmp/output #如果提示已存在/tmp/output,换个文件夹即可

4. 伪分布式步骤

Step1 注意:启动伪分布式模式之前,需要配置SSH无密码登陆(见hadoop权威指南附录A),以及在conf/hadoop-env.sh中设置JAVA_HOME.

sudo apt-get install ssh

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

注意这里有个陷阱, ~/.ssh/在home文件夹下面,你要确保authorized_keys只对其所有者root开放读写权限:

chmod 644 authorized_keys

然后才能测试无密码登陆:

ssh localhost

# The java implementation to use.  Required.

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


Step2 然后修改conf目录中的xml文件:

1)修改conf/core-site.xml,这里要注意hadoop.tmp.dir的设置,如果不设置,则默认设为/tmp文件夹,每次重启后/tmp会被清除,这样造成namenode无法启动的问题,还有端口选择49000和49001防止与其他程序冲突。

<configuration>
 <property> 
     <name>fs.default.name</name> 
     <value>hdfs://localhost:49000</value> 
   </property> 
   <property>
     <name>hadoop.tmp.dir</name>
     <value>/tmp/hadoop/hadoop-${user.name}</value>
   </property>
</configuration>


2)修改conf/mapred-site.xml:
<configuration> 
<property> 
<name>mapred.job.tracker</name> 
<value>localhost:49001</value> 
</property> 
</configuration>


3)修改conf/hdfs-site.xml:
<configuration> 
<property> 
<name>dfs.replication</name> 
<value>1</value> 
</property> 
</configuration> 

#参数 fs.default.name 指定 NameNode 的 IP 地址和端口号。缺省值是 file:///, 表示使用本地文件系统, 用于单机非分布式模式。此处我们指定使用运行于本机 localhost 上的 NameNode。
#参数 mapred.job.tracker 指定 JobTracker 的 IP 地址和端口号。缺省值是 local, 表示在本地同一 Java 进程内执行 JobTracker 和 TaskTracker, 用于单机非分布式模式。此处我们指定使用运行于本机 localhost 上的 JobTracker ( 用一个单独的 Java 进程做 JobTracker )。
#参数 dfs.replication 指定 HDFS 中每个 Block 被复制的次数,起数据冗余备份的作用。 在典型的生产系统中,这个数常常设置为3。

Step3

hadoop namenode -format

cd $HADOOP_INSTALL/bin/

start-all.sh

step4

访问http://127.0.0.1:50070和http://127.0.0.1:50030测试成功


5. windows下eclipse连接虚拟机中的hadoop注意事项

必须将虚拟机的/etc/host中的127.0.0.1项目去掉,添加真实IP地址对应主机名和localhost,否则windows中不能连接“修改conf目录中的xml文件”步骤中设置的49000和49001端口。

确保windows可以

telnet 虚拟机ip 9000

telnet 虚拟机ip 9001

hadoop-env.sh加入export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true以使用ipv4监听端口。

之后,在服务器端配置,具体是在conf/mapred-site.xml中添加下面的配置,这一部为了eclipse里面可以显示高级选项(见下文):

<property>
   <name>hadoop.job.ugi</name>
   <value>root,abc123456</value>
   <description>hadoop user access password</description>
</property>

<property>
   <name>mapred.system.dir</name>
   <value>/home/hadoop/hadoop-0.20.0/tmp/mapred/system</value>
   <description></description>
</property>
具体设置过程见:

http://galpha.iteye.com/blog/1044355

http://hi.baidu.com/coolsunsky/blog/item/c21770ca43ff9554f31fe748.html

http://blog.csdn.net/yangchao228/article/details/6646977


6. 测试运行

在hadoop所在目录里有几个jar文件,其中hadoop-examples-0.20.203.0.jar就是我们需要的,它里面含有wordcount,咱们使用命令建立测试的文件

(1)先在本地磁盘建立两个输入文件file01 和file02:

$ echo “Hello World Bye World” > file01
$ echo “Hello Hadoop Goodbye Hadoop” > file02

(2)在hdfs 中建立一个input 目录:

$ hadoop fs –mkdir input

(3)将file01 和file02 拷贝到hdfs 中:
$ hadoop fs –copyFromLocal /home/hexianghui/soft/file0* input

(4)执行wordcount:
$ hadoop jar hadoop-0.20.1-examples.jar wordcount input output

(5)完成之后,查看结果:
$ hadoop fs -cat output/part-r-00000 

结果为:

Bye 1
Goodbye 1
Hadoop 2
Hello 2
World 2


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值