分布式计算之旅(二)

来源:互联网 发布:泳道图软件 编辑:程序博客网 时间:2024/05/18 02:09

         要进行hadoop分布式计算的学习,首先你需要进行环境的搭建。Hadoop支持单机模式和集群模式!单机模式比较适合用来做程序开发和调式,而集群模式则可以发挥其分布式并行计算的特点。当然要切换两种模式只需要更换配置即可。其它的怎么进行分布式并行计算的问题Hadoop已经帮你解决了。

         好了,现在来开始HadoophelloworldHadoop可以运行在WindowsLinux下面,我本机的操作系统是xp的,如果直接装在xp下面的话需要先安装Cygwin,这里需要注意的是在安装Cygwin的时候一定选点安装openssh, 因为hadoop在部属到集群的时候,不同机器之间的通信是采用的ssh协议进行通信的。个人感觉在Windows下面做hadoop的环境有点不伦不类,所以直接放弃Windows环境而直接用Linux环境。由于资源只有本机一台PC,系统的是XP,有好多开发的软件都在上面,不是很想重装系统。然后我找了个同事要了个VMWare7.0.0 build-203739, 这样下来Linux环境就有了,而且集群环境也有了,我在Vmware下面装了三个ubuntu10.04的虚拟机(分别命名为namenode,datanode1,datanode2)。

         操作系统现在是有了,下一步就是要安装相应的软件,主要有:

一)Install  Jdk1.6

1.      可以下载jdk1.6的安装包

2.      由于是ubuntu,可以用比较方便的安装方法,直接在通过sudo apt-get install sun-java6-jdk 来进行在线的安装。(本人喜欢简单,所以用的这种办法,)

二)install  openssh-server

1.      下载openssh-server安装包

2.      采用 sudo apt-get install openssh-server

三)installhadoop 0.20.203

Download: http://labs.renren.com/apache-mirror/hadoop/core/stable/hadoop-0.20.203.0rc1.tar.gz

下载完后拷到namenode机器下 /url/local/hadoop/下面,然后做解压缩

hadoop@ubuntu tarzxvf hadoop-0.20.203.0rc1.tar.gz

         现在该要的软件都有了,然后需要做一些系统和参数的配置。

一)配置 ssh无密码登陆

装好了openssh 可以试一下命令ssh localhost,这个时候系统会提示你是输放密码。我们要送到的目的就是输入完ssh localhost后直接登陆shell.

gimmy@ubuntu:~/.ssh$ssh-keygen 一直回车,最后在~/.ssh/下面会生成一个不用输密码的公钥。

gimmy@ubuntu:~/.ssh$ cat id_rsa.pub >> authorized_keys

通过 ssh localhost验证一下(做二次,第一次要输入密码,后面即可直接登陆)

二)编辑/url/local/hadoop/hadoop-0.20.203/conf/hadoop-env.sh

 

# Thejava implementation to use.  Required.

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

                  

                   格式化namenode

                            ./bin/hadoopnamenode –format

 

                  

                   这个时候如果你直接启动./bin/start-all.sh,会报错:

STARTUP_MSG:   build =http://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-203-r 1099333; compiled by 'oom' on Wed May 4 07:57:50 PDT 2011

************************************************************/

2011-05-18 00:59:22,910 INFO org.apache.hadoop.metrics2.impl.MetricsConfig:loaded properties from hadoop-metrics2.properties

2011-05-18 00:59:22,922 INFOorg.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for sourceMetricsSystem,sub=Stats registered.

2011-05-18 00:59:22,924 INFOorg.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at10 second(s).

2011-05-18 00:59:22,924 INFOorg.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics systemstarted

2011-05-18 00:59:22,935 ERRORorg.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.NullPointerException

         atorg.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:136)

         atorg.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:176)

         atorg.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:206)

         atorg.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:240)

         atorg.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:434)

         atorg.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1153)

         atorg.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1162)

 

 

你应该再修改一下配置

core-site.xml:

       <configuration>

        <property>

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

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

        </property>

</configuration>

 

Hdfs-site.xml:

       <configuration>

        <property>

                <name>dfs.replication</name>

                <value>1</value>

        </property>

</configuration>

 

Mapred-site.xml

       <configuration>

        <property>

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

                <value>localhost:9001</value>

        </property>

</configuration>

 

然后开启hadoop进程:./bin/start-all.sh

执行完成后可用jps查看一下进程是否已经正常启动,eg:

       19130 Jps

18710 DataNode

18860 SecondaryNameNode

18568 NameNode

19070 TaskTracker

18931 JobTracker

 

现在你可以运行hadoop内置的wordcountdemo了,也就是hadoophelloworld.

 

通过运行命令:

1.     指定wordcount的输入目录,这个目录是属于hdfs的,所以要用hadoop提供的API创建,如下所示:

./bin/hadoop dfs –put conf/core-site.xmltest-in

2.     运行wordcount(test-out随便指定的,程序会自动生成在hdfs)

./bin/hadoop jar hadoop-examples-0.20.203.0.jarwordcount test-in test-out

3.     最后查看输出结果

./bin/hadoop dfs –cat test-out/part-r-00000

 

       -->   1

<!-- 1

</configuration> 1

</property>  1

<?xml    1

<?xml-stylesheet 1

<configuration>  1

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

<property>   1

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

Put  1

file. 1

href="configuration.xsl"?>       1

in    1

overrides      1

property       1

site-specific  1

this 1

type="text/xsl"    1

version="1.0"?>   1