spark系列之spark-shell详解

Spark Shell 简单介绍

Spark Shell是一个交互式的命令行,提供了一种学习API的简单方式,以及一个能够进行交互式分析数据的强大工具,他也是一个客户端,可以使用scala编写(scala运行与Java虚拟机可以使用现有的Java库)或使用Python编写。方便学习和测试,用于提交spark应用程序。

 spark-shell的本质是在后台调用了spark-submit脚本来启动应用程序的。

 Spark Shell 启动

启动spark-shell,命令如下:

/spark-2.2.0-bin-hadoop2.7/bin/spark-shell

注意:这种方式启动spark shell时没有指定master地址,但是也可以正常启动spark shell和执行spark shell中的程序,其实是启动了spark的local模式,该模式仅在本机启动一个进程,没有与集群建立联系。

/spark-2.2.0-bin-hadoop2.7/bin/spark-shell --master spark://node-4:7077,node-5:7077 --executor-memory 2g --total-executor-cores 2

参数说明:

--master spark://node-4:7077,node-5:7077     指定Master的地址
--executor-memory 2g 指定每个worker可用内存为2G
--total-executor-cores 2 指定整个集群使用的cup核数为2个

上面是指定了master的地址,那么就会将任务提交到集群,开始时sparksubmit(客户端)要连接Master,并申请计算资源(内存和核数),Master进行资源调度(就是让那些Worker启动Executor),在准备工作时,这些进程都已经创建好了。

启动spark shell后,查看UI管理界面,会发现Application ID多了一个正在运行的spark shell进程。
 

Spark Shell 完成WordCount计算

1. 启动HDFS(上传数据到hdfs)

2. 通过上述方式启动spark shell(客户端)

3. 进入scala交互式命令行,执行

scala> val textFile = sc.textFile("hdfs://node-4:9000/wc").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).sortBy(_._2, false).collect

 这里的sc是spark core(RDD)的执行入口。

 

 

你可能感兴趣的:(大数据)