hadoop集群下测试运行从eclipse打包的wordcount应用

eclipse打包wordcount的jar包

  • 使用环境
    scala 2.11.8
    jre 1.8.1_161
    代码情况

wordcount程序

1:   import org.apache.spark.SparkContext
2:   import org.apache.spark.SparkContext._
3:   import org.apache.spark.SparkConf
4:   object SimpleApp {
5:     def main(args: Array[String]) {
6:       if(args.length != 2) {
7:         println("error : too few arguments")
8:         sys.exit(1)
9:       }
10:      val inputFile = args(0) // 读取输入文件路径参数
11:      val outputFile = args(1) // 读取输出文件路径参数
12:      val conf = new SparkConf().setAppName("WordCount").setMaster("local") // 生成Spark配置实例
13:      val sc = new SparkContext(conf) // 生成SparkContext实例
14:      val file = sc.textFile(inputFile, 3) // 读取输入文件内容生成RDD
15:      val counts = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _) // 统计单词出现次数
16:      counts.saveAsTextFile(outputFile) // 保存统计结果
17:    }
18:  }

在hadoop集群上执行jar包需要通过脚本来提交此应用,即触发Spark应用初始化,有两种情况:
1) 使用Spark-shell执行Spark程序时,在Spark-shell交互式环境启动时,就会自动为用户完成Spark的配置工作,并自动创建SparkContext来连接Spark集群,在我们看到Spark-shell的命令行输入窗口,即已完成应用初始化过程。此时我们可以sc对象执行Spark操作,这里的sc对象就是SparkContext的首字母缩写。
2) 使用spark-submit提交Spark程序的方式。 我们可以通过Spark提供的spark-submit脚本将应用程序提交给Spark集群处理。用户可以首先将编写好的应用程序进行打包生成Jar文件,然后可以通过配置好的spark-submit脚本将应用程序提交给Spark集群处理。在spark-submit脚本中用户可以根据自己的需要和集群的实际情况配置多个参数。下面就是我运行在yarn集群上的一个spark-submit脚本的实例:

export YARN_CONF_DIR=/opt/cloudera/parcels/CDH/lib/spark
spark-submit \
--master yarn-client \
--class learnspark.SimpleTest \
--num-executors 3 \
--driver-memory 1g \
--executor-memory 1g \                          #指明需要配置executor的内存大小,Spark对于RDD的操作都是基于内存的,因此executor的内存大小设置直接影响到程序的性能。
--executor-cores 1 \                            #用户可以通过设定来指定executor使用的计算机内核数目,在yarn模式下,可以通过executor-cores NUM指定每个executor使用的内核数,而在Mesos模式下需要使用total-executor-cores NUM来为所有executor指定可以使用的内核总数。
/mnt/buffer/chenweizhe/SimpleTest.jar \         #应用程序jar包地址
/user/chenweizhe/word.txt \                     #应用程序输入参数
/user/chenweizhe/OutputA \                      #应用程序输出参数
/user/chenweizhe/OutputB                        #应用程序输出参数

vi命令

每次提交应用如果都要打这么一大堆脚本就会很麻烦,所以可以采取vi命令编写一个sh文件

vi test.sh

vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。

vi编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令,要正确使用vi编辑器就必须熟练掌握着两种模式的切换。默认情况下,打开vi编辑器后自动进入命令模式。从编辑模式切换到命令模式使用“esc”键,从命令模式切换到编辑模式使用“A”、“a”、“O”、“o”、“I”、“i”键。

vi编辑器提供了丰富的内置命令,有些内置命令使用键盘组合键即可完成,有些内置命令则需要以冒号“:”开头输入。常用内置命令如下:

Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏;
Ctrl+f:向文件尾翻一屏;
Ctrl+b:向文件首翻一屏;
Esc:从编辑模式切换到命令模式;
ZZ:命令模式下保存当前文件所做的修改后退出vi;
:行号:光标跳转到指定行的行首;
:$:光标跳转到最后一行的行首;
x或X:删除一个字符,x删除光标后的,而X删除光标前的;
D:删除从当前光标到光标所在行尾的全部字符;
dd:删除光标行正行内容;
ndd:删除当前行及其后n-1行;
nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字;
p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方;
P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方;
/字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示;
?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;
a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作;
a:在当前字符后添加文本;
A:在行末添加文本;
i:在当前字符前插入文本;
I:在行首插入文本;
o:在当前行后面插入一空行;
O:在当前行前面插入一空行;
:wq:在命令模式下,执行存盘退出操作;
:w:在命令模式下,执行存盘操作;
:w!:在命令模式下,执行强制存盘操作;
:q:在命令模式下,执行退出vi操作;
:q!:在命令模式下,执行强制退出vi操作;
:e文件名:在命令模式下,打开并编辑指定名称的文件;
:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;
:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;
:set number:在命令模式下,用于在最左端显示行号;
:set nonumber:在命令模式下,用于在最左端不显示行号;

按下i后即可进入insert编辑模式进行脚本书写,编写完毕后,按esc进入命令模式,键入 :wq命令后回车,即完成保存退出。

运行应用

以上就完成了运行应用的前提工作,此时只需要执行

sh test.sh

即可运行你的jar包即你的应用。
这里写图片描述
查看一下用户目录下的内容,多出了两个output文件夹,即应用运行成功。
相对应的查看输出文件夹中的内容可查看输出结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值