在ubuntu部署hadoop之伪分布模式

引文地址:http://www.cnblogs.com/welbeckxu/archive/2011/12/29/2306757.html

接上一篇《ubuntu部署hadoop之单机模式》。

已经安装好了jdk和hadoop-0.20.2。

首先在hadoop目录下新建几个文件夹

xukangde@xukangde-01:~/hadoop$ mkdir tmp
xukangde@xukangde-01:~/hadoop$ mkdir hdfs
xukangde@xukangde-01:~/hadoop$ mkdir hdfs/name
xukangde@xukangde-01:~/hadoop$ mkdir hdfs/data

core-site.xml:  Hadoop Core的配置项,例如HDFS和MapReduce常用的I/O设置等。

hdfs-site.xml:  Hadoop 守护进程的配置项,包括namenode,辅助namenode和datanode等。

mapred-site.xml: MapReduce 守护进程的配置项,包括jobtracker和tasktracker。

在conf目录中,编辑以下文件:(以xukangde用户登录,则目录path/to/your/hadoop应该为/home/xukangde/hadoop)

core-site.xml,hdfs-site.xml,mapred-site.xml
xukangde@xukangde-01:~/hadoop$ sudo gedit conf/core-site.xml

 

复制代码
<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/path/to/your/hadoop/tmp</value>
    </property>
</configuration>
复制代码

 

xukangde@xukangde-01:~/hadoop$ sudo gedit conf/hdfs-site.xml

 

复制代码
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>/path/to/your/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/path/to/your/hadoop/hdfs/data</value>
    </property>
</configuration>
复制代码

 

xukangde@xukangde-01:~/hadoop$ sudo gedit conf/mapred-site.xml

 

复制代码
<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>localhost:9001</value>
    </property>
</configuration>
复制代码

配置SSH

安装一个Hadoop集群时,需要专门指定一个服务器作为主节点。这个服务器通常会驻留NameNode和JobTracker的守护进程。它也将作为一个基站,负责联络并激活所有从节点上的DataNode和TaskTracker守护进程。因此,我们需要为主节点定制一种手段,使它能够远程地访问到集群中的每个节点。为此,Hadoop使用了无口令的(passphraseless)SSH协议。SSH采用标准的公钥加密来生成一对用户验证密钥---- 一个公钥,一个私钥。公钥被本地存储在集群的每个节点上,私钥则由主节点在试图访问远端节点时发送过来。结合这两段信息,目标机可以对这次登录尝试进行验证。

判断是否安装ssh服务,可以通过如下命令进行:

xukangde@xukangde-01:~$ ssh localhost
ssh: connect to host localhost port 22: Connection refused

如上所示,表示没有还没有安装,可以通过apt安装,命令如下:

xukangde@xukangde-01:~$ sudo apt-get install openssh-server

系统将自动进行安装,安装完成以后,先启动服务:

复制代码
xukangde@xukangde-01:~$ sudo /etc/init.d/ssh start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service ssh start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start ssh
复制代码

启动后,可以通过如下命令查看服务是否正确启动

xukangde@xukangde-01:~$ ps -e|grep ssh
 1168 ?        00:00:00 ssh-agent
 6524 ?        00:00:00 sshd

如上表示启动ok。注意,ssh默认的端口是22。

输入命令

xukangde@xukangde-01:~$ ssh localhost

运行后需要输入密码,做以下处理

xukangde@xukangde-01:~$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

xukangde@xukangde-01:~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

再次输入命令

xukangde@xukangde-01:~$ ssh localhost

这时不再需要输入密码。

 

第一次运行

首先需要格式化dfs布式系统:

xukangde@xukangde-01:~/hadoop$ bin/hadoop namenode -format

(如果需要重新格式化,出现(Y / N )提示时记得输入大写的Y)

 

使用start-all.sh脚本来装载守护进程
xukangde@xukangde-01:~/hadoop$ bin/start-all.sh

用Java的jps命令列出所有守护进程来验证安装成功

 

xukangde@xukangde-01:~/hadoop$ jps

会见到下面类似的列表

复制代码
2407 Jps
1914 DataNode
1751 NameNode
2075 SecondaryNameNode
2290 TaskTracker
2139 JobTracker
复制代码

 

运行WordCount

首先在dfs中创建input目录

xukangde@xukangde-01:~/hadoop$ bin/hadoop dfs -mkdir input

将conf中的文件拷贝到dfs中的input

 

xukangde@xukangde-01:~/hadoop$ bin/hadoop dfs -copyFromLocal conf/* input

在伪分布式模式下运行WordCount

 

xukangde@xukangde-01:~/hadoop$ bin/hadoop jar hadoop-0.20.2-examples.jar wordcount input output

可看到以下过程

 

复制代码
11/12/29 21:48:47 INFO input.FileInputFormat: Total input paths to process : 13
11/12/29 21:48:47 INFO mapred.JobClient: Running job: job_201112292145_0001
11/12/29 21:48:48 INFO mapred.JobClient:  map 0% reduce 0%
11/12/29 21:48:57 INFO mapred.JobClient:  map 15% reduce 0%
11/12/29 21:49:00 INFO mapred.JobClient:  map 30% reduce 0%
11/12/29 21:49:03 INFO mapred.JobClient:  map 46% reduce 0%
11/12/29 21:49:06 INFO mapred.JobClient:  map 61% reduce 10%
11/12/29 21:49:09 INFO mapred.JobClient:  map 76% reduce 10%
11/12/29 21:49:12 INFO mapred.JobClient:  map 92% reduce 10%
11/12/29 21:49:15 INFO mapred.JobClient:  map 100% reduce 20%
11/12/29 21:49:25 INFO mapred.JobClient:  map 100% reduce 100%
11/12/29 21:49:27 INFO mapred.JobClient: Job complete: job_201112292145_0001
11/12/29 21:49:27 INFO mapred.JobClient: Counters: 17
11/12/29 21:49:27 INFO mapred.JobClient:   Job Counters 
11/12/29 21:49:27 INFO mapred.JobClient:     Launched reduce tasks=1
11/12/29 21:49:27 INFO mapred.JobClient:     Launched map tasks=13
11/12/29 21:49:27 INFO mapred.JobClient:     Data-local map tasks=13
11/12/29 21:49:27 INFO mapred.JobClient:   FileSystemCounters
11/12/29 21:49:27 INFO mapred.JobClient:     FILE_BYTES_READ=15969
11/12/29 21:49:27 INFO mapred.JobClient:     HDFS_BYTES_READ=18611
11/12/29 21:49:27 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=32426
11/12/29 21:49:27 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=10932
11/12/29 21:49:27 INFO mapred.JobClient:   Map-Reduce Framework
11/12/29 21:49:27 INFO mapred.JobClient:     Reduce input groups=591
11/12/29 21:49:27 INFO mapred.JobClient:     Combine output records=777
11/12/29 21:49:27 INFO mapred.JobClient:     Map input records=567
11/12/29 21:49:27 INFO mapred.JobClient:     Reduce shuffle bytes=16041
11/12/29 21:49:27 INFO mapred.JobClient:     Reduce output records=591
11/12/29 21:49:27 INFO mapred.JobClient:     Spilled Records=1554
11/12/29 21:49:27 INFO mapred.JobClient:     Map output bytes=24746
11/12/29 21:49:27 INFO mapred.JobClient:     Combine input records=1780
11/12/29 21:49:27 INFO mapred.JobClient:     Map output records=1780
11/12/29 21:49:27 INFO mapred.JobClient:     Reduce input records=777
复制代码

显示输出结果

 

xukangde@xukangde-01:~/hadoop$ bin/hadoop dfs -cat output/*

当Hadoop结束时,可以通过stop-all.sh脚本来关闭Hadoop的守护进程

 

xukangde@xukangde-01:~/hadoop$ bin/stop-all.sh

在Hadoop中用于监控集群健康状态的Web界面

  1. http://localhost:50030/ – web UI for MapReduce job tracker(s)
  2. http://localhost:50060/ – web UI for task tracker(s)
  3. http://localhost:50070/ – web UI for HDFS name node(s)

单机模式和伪分布模式均用于开发和调试的目的。真实Hadoop集群的运行采用的是第三种模式,即全分布模式。待续。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值