感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!
如果转载,请保留作者信息。
hadoop系列之hadoop本地模式部署
Hadoop部署模式
Hadoop部署模式有:本地模式、伪分布模式、完全分布式模式
本地模式:默认情况下,Hadoop被配置为以非分布模式运行,作为单个Java进程。这对调试很有用,或者快速安装体验Hadoop
伪分布模式:Hadoop也可以在伪分布模式下的单节点上运行,其中每个Hadoop守护进程都在单独的Java进程中运行,学习Hadoop一般是在伪分布式模式下进行。这种模式是在一台机器上各个进程上运行Hadoop的各个模块,伪分布式的意思是虽然各个模块是在各个进程上分开运行的,但是只是运行在一个操作系统上的,并不是真正的分布式。
完全分布式模式:完全分布式模式才是生产环境采用的模式,Hadoop运行在服务器集群上,生产环境一般都会做HA,以实现高可用。
本文介绍hadoop的本地模式部署方法
本地模式是最简单的模式,所有模块都运行与一个JVM进程中,使用的本地文件系统,而不是HDFS,本地模式主要是用于本地开发过程中的运行调试用。下载hadoop安装包后,解压hadoop后就是直接可以使用,不用任何设置,默认的就是本地模式。
[root@hadoop softwares]# tar -zxvfhadoop-2.5.0-cdh5.3.6.tar.gz -C/opt/modules/
[root@hadoop ~]# cd/opt/modules/hadoop-2.5.0-cdh5.3.6/
[root@hadoop hadoop-2.5.0-cdh5.3.6]# mkdirinput 创建本地存储目录
[root@hadoop hadoop-2.5.0-cdh5.3.6]# mkdir-p /opt/data/
[root@hadoop hadoop-2.5.0-cdh5.3.6]# touch/opt/data/data.input 创建测试文件
[root@hadoop hadoop-2.5.0-cdh5.3.6]# vi/opt/data/data.input 写入测试数据
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop
运行MapReduce程序
[root@hadoop hadoop-2.5.0-cdh5.3.6]#bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jarwordcount /opt/data/data.input output
注意:wordcount 统计数据的输出次数; /opt/data/data.input为准备的数据; output为自动生成的输出目录,如果output目录存在,则运行程序为报错,如下所示:
18/03/1904:44:44WARNsecurity.UserGroupInformation:PriviledgedActionExceptionas:root (auth:SIMPLE)cause:org.apache.hadoop.mapred.FileAlreadyExistsException:Output directoryfile:/opt/modules/hadoop-2.5.0-cdh5.3.6/output already exists
org.apache.hadoop.mapred.FileAlreadyExistsException:Outputdirectoryfile:/opt/modules/hadoop-2.5.0-cdh5.3.6/output already exists
解决办法:删除output目录
rm -rf /opt/modules/hadoop-2.5.0-cdh5.3.6/output
看到以下结果,说明hadoop本地模式运行成功:
查看输出文件,本地模式下,mapreduce的输出是输出到本地。
[root@hadoop hadoop-2.5.0-cdh5.3.6]# ls -l output/
total 4
-rw-r--r-- 1 root root 60 Mar 19 04:45 part-r-00000
-rw-r--r-- 1 root root 0Mar 19 04:45 _SUCCESS
[root@hadoop hadoop-2.5.0-cdh5.3.6]# cat output/part-r-00000
hadoop 3
hbase 1
hive 2
mapreduce 1
spark 2
sqoop 1
storm 1
[root@hadoop hadoop-2.5.0-cdh5.3.6]# cp etc/hadoop/*.xml ./input
[root@hadoop hadoop-2.5.0-cdh5.3.6]#bin/hadoop jarshare/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar grep input output2 'dfs[a-z.]+'
过滤dfs开头的单词到putput2目录中
hadoop本地运行成功:
[root@hadoophadoop-2.5.0-cdh5.3.6]# ls -l output2/
total 4
-rw-r--r-- 1 rootroot 11 Mar 19 04:59 part-r-00000
-rw-r--r-- 1 rootroot 0 Mar 19 04:59 _SUCCESS
[root@hadoop hadoop-2.5.0-cdh5.3.6]#cat output2/part-r-00000
1 dfsadmin
输出目录中有_SUCCESS文件说明JOB运行成功,part-r-00000是输出结果文件
至此,hadoop本地模式部署演示完成。