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進入管理界面
使用者名和密碼都預設是admin
首先是進入這個界面
我們可以直覺的看到hadoop上的應用,可以在這裡直接對其操作
如果是對spark的曆史運作資訊查詢,隻需要通過界面化操作即可,不用在單獨記憶端口号
對叢集中的node也可以直覺看到運作情況
此外由于cloudera是一鍵化安裝叢集,是以datanode預設至少三個,在目前使用中,隻要不報紅,基本都是記憶體和node數量問題。
spark叢集運作wordcount示例
這裡主要采用spark-submit送出intellij idea的jar包的方式運作,如果jar包占用空間太大也可以采用mvn package。
這裡intellij idea也是安裝好的,是以直接開啟建立工程。
intellij idea建立工程
從最開始界面直接選擇create new project
這裡主要采用的scala語言,是以選擇SBT,當然Maven建立也是可以的。 同時這裡由于工程檔案名問題,這裡的test和後面shiyan為同一個project name
引入scala的SDK,然後點選java引入spark-assembly的包,這裡建議使用hadoop、spark單獨的spark-assembly,cloudera自帶的spark-assembly包會在編譯時報錯
在這裡引入完主要的包之後就可以開始寫scala代碼,首先建立scala的object
然後是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報
這裡點選shift+enter鍵即可以自動識别main class,這裡main class在後面spark-submit會用到。
到此為止jar還沒有完成,還需要build
在編譯器下方的執行條完成後可以看到jar包在out檔案中
到此我們找到jar包的位置,/root/IdeaProjects/shiyan/out/artifacts/shiyan.jar。
hdfs的相關指令在這裡https://blog.csdn.net/tanqu9315/article/details/79065594
由于代碼中沒有列印出來結果,具體結果需要進入hdfs檢視輸出結果。
我們也可以在cloudera管理界面檢視相關程序。