spark wordcount筆記

環境:node

  JDK1.8瀏覽器

  scala-2.10.4app

  spark-1.6.0ssh

  hadoop-2.7.3oop

  CentOS-7-x86_64-DVD-1511  3臺測試

    master hostnamespa

      hadoop1scala

    slave hostnamecode

      hadoop2排序

      hadoop3

1.使用scala編寫spark wordcount項目,先本地測試。

object FilterCountOperator {

def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("MapOperator").setMaster("local")
val sc = new SparkContext(conf)
val textFileRdd = sc.textFile("hdfs://hadoop1:9000/input/log.txt")
/**
* 把每行裝換成"企業名,1"
* 2016-09-04 某某企業 1123 北京
* (某某企業,1)
*/
val nameRdd = textFileRdd.map(line => (line.split("\t")(1), 1))
/**
* 企業名彙總
*/
val nameCountRdd = nameRdd.reduceByKey((v1:Int, v2:Int) => v1+v2)
/**
* sortBy x => x._2 , false
* 根據value
* 倒序排序
*/
val sortRdd = nameCountRdd.sortBy((x:(String, Int)) => x._2, false)
/**
* 取出出現次數最多的學校名稱
*/
val name = sortRdd.take(1)(0)._1
println(name)
/**
* 過濾文件中出現最多的企業名
*/
val resultRdd = textFileRdd.filter(x => !name.equals(x.split("\t")(1)))
resultRdd.saveAsTextFile("hdfs://hadoop1:9000/output/result")
sc.stop()
 }
}

2.搭建hadoop HA

  a).將hadoop-2.7.3.tar.gz上傳至hadoop1節點的指定目錄(/software/),安裝tar –xvf ./hadoop-2.7.2.tar.gz

  b).修改hadoop-env.sh
    vi /software/hadoop-2.7.3/etc/hadoop/hadoop-env.sh

    修改export JAVA_HOME 語句爲 export JAVA_HOME={你本身的JAVA_HOME路徑,若是配置了環境變量,能夠不用配置}

  c).設置hadoop環境變量,HADOOP_HOME/bin、HADOOP_HOME/sbin都要加到$path中

  d).創建免祕鑰登陸(可選項,爲了後期方便)

    [root@hadoop1 ~]# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

    #私鑰 id_dsa

    #公鑰 id_dsa.pub 

    #想登錄哪臺機器,就把公鑰裏面的內容copy 給哪臺機器的authorized_keys裏面保存,登錄自身免密執行以下命令
    [root@hadoop1 .ssh]# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

3.搭建spark 集羣

  a).將spark-1.6.0-bin-hadoop2.6.tgz上傳至hadoop1節點的指定目錄(/software/),安裝tar –xvf ./spark-1.6.0-bin-hadoop2.6.tgz,mv更名字

  b)./ect/profile 下配置環境變量 ($SPARK_HOME/bin\$SPARK_HOME/sbin都要加到$PATH中)

  c).進入conf下

    一、將slaves.template 修改成 slaves

    二、修改slaves,將從節點的ip或者hostname添加到這個文件中,每個ip或者hostname佔用一行

    三、將spark-env.sh.template 修改成 spark-env.sh

    四、在spark-env.sh配置文件中添加如下環境變量     

      export SPARK_MASTER_IP=hadoop1  #master節點的hostname
      export SPARK_MASTER_PORT=7077  #提交applicatoin的端口

      export SPARK_WORKER_MEMORY=2g #每個Worker節點管理2G內存
      export SPARK_WORKER_CORES=3    #每個Worker節點管理3個core

4.安裝scala,配置環境變量

  a).將scala-2.10.4.tgz上傳至hadoop1節點的指定目錄(/software/),安裝tar –xvf ./scala-2.10.4.tgz,mv更名字

  b)./ect/profile 下配置環境變量

  c).關閉虛擬機,複製兩份

    分別修改虛擬機的ip和hostname(hadoop二、hadoop3),確認互相可以ping通,用ssh登錄,同時修改全部虛擬機的/etc/hosts,確認使用名字能夠ping通

    關閉防火牆,防止端口端口訪問不一樣。

5.把項目打成jar包放到spark上運行(移動計算,不移動數據)

  a).導出jar包

  b).在hadoop1節點的SPARK_HOME/sbin下執行start-all.sh腳本 啓動spark集羣

  c).分別在hadoop1節點執行 hadoop-daemon.sh start namenode; hadoop二、3執行 hadoop-daemon.sh start datanode 啓動hadoop

  d).使用瀏覽器打開http://hadoop1:8080查看spark集羣的運行環境、http://hadoop1:50070查看hadoop的運行環境

  e).上傳jar包、測試數據的文件到hadoop1節點

    在hdfs中建立input文件夾:hdfs dfs -mkdir /input

    放入測試數據文件:hdfs dfs -put log.txt /input/log.txt

  f).提交application

    spark-submit --master spark://hadoop1:7077 --class FilterCountOperator ../lib/WordCount.jar

相關文章
相關標籤/搜索