Cloudera管理集群,spark集群运行wordcount示例

Cloudera启动、管理集群

这里由于是直接接手Cloudera,并没有进行Cloudera的一键化安装。
首先由于确定cloudera位置,进入

find / -name "cloudera*"

确定位置之后在主节点启动

/opt/cm-5.10.0/etc/init.d/cloudera-scm-server start  启动服务端
/opt/cm-5.10.0/etc/init.d/cloudera-scm-agent start  启动agent服务

在其他slave节点启动agent服务

/opt/cm-5.10.0/etc/init.d/cloudera-scm-agent start

登录网页,主机名:7180进入管理界面
Cloudera管理集群,spark集群运行wordcount示例_第1张图片
用户名和密码都默认是admin
首先是进入这个界面
Cloudera管理集群,spark集群运行wordcount示例_第2张图片
我们可以直观的看到hadoop上的应用,可以在这里直接对其操作
Cloudera管理集群,spark集群运行wordcount示例_第3张图片
如果是对spark的历史运行信息查询,只需要通过界面化操作即可,不用在单独记忆端口号
Cloudera管理集群,spark集群运行wordcount示例_第4张图片
Cloudera管理集群,spark集群运行wordcount示例_第5张图片
对集群中的node也可以直观看到运行情况
Cloudera管理集群,spark集群运行wordcount示例_第6张图片
此外由于cloudera是一键化安装集群,因此datanode默认至少三个,在目前使用中,只要不报红,基本都是内存和node数量问题。

spark集群运行wordcount示例

这里主要采用spark-submit提交intellij idea的jar包的方式运行,如果jar包占用空间太大也可以采用mvn package。
这里intellij idea也是安装好的,因此直接开启创建工程。

intellij idea创建工程

从最开始界面直接选择create new project
Cloudera管理集群,spark集群运行wordcount示例_第7张图片
这里主要采用的scala语言,因此选择SBT,当然Maven创建也是可以的。 同时这里由于工程文件名问题,这里的test和后面shiyan为同一个project name
Cloudera管理集群,spark集群运行wordcount示例_第8张图片
Cloudera管理集群,spark集群运行wordcount示例_第9张图片
Cloudera管理集群,spark集群运行wordcount示例_第10张图片
Cloudera管理集群,spark集群运行wordcount示例_第11张图片

引入scala的SDK,然后点击java引入spark-assembly的包,这里建议使用hadoop、spark单独的spark-assembly,cloudera自带的spark-assembly包会在编译时报错
Cloudera管理集群,spark集群运行wordcount示例_第12张图片
在这里引入完主要的包之后就可以开始写scala代码,首先创建scala的object
Cloudera管理集群,spark集群运行wordcount示例_第13张图片
Cloudera管理集群,spark集群运行wordcount示例_第14张图片
然后是wordcount的代码,(这里没有按照默认要求将wc大写)

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.SparkContext._
object wordcount {
  def main(args: Array[String]): Unit = {
      if (args.length < 1){
        System.err.println("Usage: ")
        System.exit(1)
      }
    val conf = new SparkConf()
    val sc = new SparkContext(conf)
    val line = sc.textFile("/input/word.txt")
    val rdd1 = line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_)
    rdd1.saveAsTextFile("/input/result")
    sc.stop()
  }

}

读取的文件和输出文件都存放在hdfs中,这里是在hadoop配置文件中配置hdfs信息,若没有配置则

val line = sc.textFile("file:///input/word.txt")
val line = sc.textFile("hdfs:///input/word.txt")

在完成了代码之后,intellij idea中编译有时会报sc初始化错误。
下面对代码进行打jar报
Cloudera管理集群,spark集群运行wordcount示例_第15张图片
Cloudera管理集群,spark集群运行wordcount示例_第16张图片
Cloudera管理集群,spark集群运行wordcount示例_第17张图片
这里点击shift+enter键即可以自动识别main class,这里main class在后面spark-submit会用到。
到此为止jar还没有完成,还需要build
Cloudera管理集群,spark集群运行wordcount示例_第18张图片
Cloudera管理集群,spark集群运行wordcount示例_第19张图片
在编译器下方的执行条完成后可以看到jar包在out文件中
Cloudera管理集群,spark集群运行wordcount示例_第20张图片

到此我们找到jar包的位置,/root/IdeaProjects/shiyan/out/artifacts/shiyan.jar。
hdfs的相关指令在这里https://blog.csdn.net/tanqu9315/article/details/79065594

./spark-submit --class data --master yarn --deploy-mode cluster /root/IdeaProjects/shiyan/out/artifacts/shiyan.jar

由于代码中没有打印出来结果,具体结果需要进入hdfs查看输出结果。
我们也可以在cloudera管理界面查看相关进程。

你可能感兴趣的:(spark,intellj,idea,cloudera,spark-submit,spark,cloudera,intellij,idae)