天天看點

Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例

Cloudera啟動、管理叢集

這裡由于是直接接手Cloudera,并沒有進行Cloudera的一鍵化安裝。

首先由于确定cloudera位置,進入

确定位置之後在主節點啟動

/opt/cm-/etc/init.d/cloudera-scm-server start  啟動服務端
/opt/cm-/etc/init.d/cloudera-scm-agent start  啟動agent服務
           

在其他slave節點啟動agent服務

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

登入網頁,主機名:7180進入管理界面

Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例

使用者名和密碼都預設是admin

首先是進入這個界面

Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例

我們可以直覺的看到hadoop上的應用,可以在這裡直接對其操作

Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例

如果是對spark的曆史運作資訊查詢,隻需要通過界面化操作即可,不用在單獨記憶端口号

Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例
Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例

對叢集中的node也可以直覺看到運作情況

Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例

此外由于cloudera是一鍵化安裝叢集,是以datanode預設至少三個,在目前使用中,隻要不報紅,基本都是記憶體和node數量問題。

spark叢集運作wordcount示例

這裡主要采用spark-submit送出intellij idea的jar包的方式運作,如果jar包占用空間太大也可以采用mvn package。

這裡intellij idea也是安裝好的,是以直接開啟建立工程。

intellij idea建立工程

從最開始界面直接選擇create new project

Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例

這裡主要采用的scala語言,是以選擇SBT,當然Maven建立也是可以的。 同時這裡由于工程檔案名問題,這裡的test和後面shiyan為同一個project name

Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例
Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例
Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例
Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例

引入scala的SDK,然後點選java引入spark-assembly的包,這裡建議使用hadoop、spark單獨的spark-assembly,cloudera自帶的spark-assembly包會在編譯時報錯

Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例

在這裡引入完主要的包之後就可以開始寫scala代碼,首先建立scala的object

Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例
Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例

然後是wordcount的代碼,(這裡沒有按照預設要求将wc大寫)

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.SparkContext._
object wordcount {
  def main(args: Array[String]): Unit = {
      if (args.length < ){
        System.err.println("Usage: <file>")
        System.exit()
      }
    val conf = new SparkConf()
    val sc = new SparkContext(conf)
    val line = sc.textFile("/input/word.txt")
    val rdd1 = line.flatMap(_.split(" ")).map((_, )).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示例Cloudera啟動、管理叢集spark叢集運作wordcount示例
Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例
Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例

這裡點選shift+enter鍵即可以自動識别main class,這裡main class在後面spark-submit會用到。

到此為止jar還沒有完成,還需要build

Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例
Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例

在編譯器下方的執行條完成後可以看到jar包在out檔案中

Cloudera管理叢集,spark叢集運作wordcount示例Cloudera啟動、管理叢集spark叢集運作wordcount示例

到此我們找到jar包的位置,/root/IdeaProjects/shiyan/out/artifacts/shiyan.jar。

hdfs的相關指令在這裡https://blog.csdn.net/tanqu9315/article/details/79065594

由于代碼中沒有列印出來結果,具體結果需要進入hdfs檢視輸出結果。

我們也可以在cloudera管理界面檢視相關程序。

繼續閱讀