Hadoop2.7.1伪分布式运行实例

配置完成后,执行 namenode 的格式化:

bin/hadoop  namenode  -format 

输入命令,启动进程

sbin/start-all.sh (bin/start-all.sh)

查看进程启动情况:

 jps

打开浏览器,输入网址

http://localhost:8088(50030)

http://localhost:50070

上面的单机模式,grep 例子读取的是本地数据,伪分布式读取的则是 HDFS 上的数据。要使用 HDFS,首先需要创建用户目录


bin/hdfs dfs -mkdir -p user/hadoop

(bin/hadoop dfs -mkdir -p usr/hadoop)

接着将 etc/hadoop 中的文件作为输入文件复制到分布式文件系统中,即将 /usr/local/hadoop/etc/hadoop 复制到分布式文件系

统中的/user/hadoop/input 中。上一步已创建了用户目录 /user/hadoop ,因此命令中就可以使用相对目录如 input,其对应的

绝对路径就是 /user/hadoop/input:


bin/hdfs dfs -mkdir input

bin/hdfs dfs -put etc/hadoop/*.xml input


(bin/hadoop dfs -put etc/hadoop/*.xml input)

复制完成后,可以通过如下命令查看文件列表:



bin/hdfs dfs -ls input


伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件(可以将单机步骤中创建的本

地 input 文件夹删掉以及运行结果来验证这一点)。


bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'


查看运行结果的命令(查看的是位于 HDFS 中的输出结果):

bin/hdfs dfs -cat output/*


也可以将运行结果取回到本地:

rm -R ./output(可能不需要)

bin/hdfs dfs -get output output     # 将 HDFS 上的 output 文件夹拷贝到本机

cat ./output/*


结果如下,注意到刚才我们已经更改了配置文件,所以运行结果不同。

Hadoop伪分布式运行grep结果

Hadoop伪分布式运行grep结果


Hadoop运行程序时,默认输出目录不能存在,因此再次运行需要执行如下命令删除 output文件夹:


bin/hdfs dfs -rm -r /user/hadoop/output     # 删除 output 文件夹

(bin/hadoop  dfs -rmr  /user/hadoop/output     # 删除 output 文件夹)

运行程序时,输出目录需不存在
运行 Hadoop 程序时,结果的输出目录(如output)不能存在,否则会提示错误,因此运行前需要先删除输出目录。在实际开发应用程序时,可


在程序中加上如下代码,能在每次运行时自动删除输出目录,避免繁琐的命令行操作:


Configuration conf = new Configuration();
Job job = new Job(conf);
...
/* 删除输出目录 */
Path outputPath = new Path(args[1]);
outputPath.getFileSystem(conf).delete(outputPath, true);

...


若要关闭 Hadoop,则运行


sbin/stop-dfs.sh


自此,你已经掌握 Hadoop 的配置和基本使用了。


注意
下次启动 hadoop 时,无需进行 namenode 的初始化,只需要运行 sbin/start-dfs.sh 就可以!


附加教程: 配置PATH环境变量
在这里额外讲一下 PATH 这个环境变量(可执行 echo $PATH 查看,当中包含了多个目录)。例如我们在执行 ls 这个命令时,实际执行的
是/bin/ls 这个程序,而不是 ~/ls 这个程序(假如存在)。系统是根据 PATH 这个环境变量中包含的目录位置,逐一进行查找,直至在这些目
录位置下找到匹配的程序(若没有匹配的则提示该命令不存在)。

上面的教程中,我们都是先进入到 /usr/local/hadoop 目录中,再执行 sbin/hadoop,实际上等同于运行 /usr/local/hadoop/sbin/hadoop。

我们可以将 Hadoop 命令的相关目录加入到 PATH 环境变量中,这样就可以直接通过start-dfs.sh 开启 Hadoop,也可以直接通过 hdfs 访问 


HDFS 的内容,方便平时的操作。


同样我们选择在 ~/.bashrc 中进行设置(vim ~/.bashrc,与 JAVA_HOME 的设置相似),在文件最前面加入如下单独一行:

export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin
添加后执行 source ~/.bashrc 使设置生效,生效后,在任意目录中,都可以直接使用 hdfs dfs -ls input 等命令,而无需使用绝对目录。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值