hive on spark on yarn

最近不是很忙就寫篇關於spark在實際中的應用
我目前帶領團隊給幾家銀行做數據分析相關工作,其中一家使用的是spark,一家使用的是impala,還有一家用的是hadoop。今天重點就來說說spark吧。
由於設計商業機密,我重新簡單的畫了個和業務無關的架構圖

首先要告訴大家的是,在生產環境我們很少直接寫MR或者用SCALA組合自己的RDD。雖然寫過但是真的很少很少。這樣說並不代表他們不重要,只是生產環境時間人力都有限,我們一般都會選擇HIVE來寫業務邏輯。所以大家一定要學好HIVE,至少目前來看直接使用sparkSQL還不是很成熟。

言歸正傳,我們先來搭建起我們的HIVE on spark on yarn的環境吧,對於spark在生產環境應用的問題歡迎大家和我溝通,互相學習。我的郵箱是[email protected]

Hive On Spark
對於Hive和Spark的安裝,請查看我博客相關章節,這裏只提下將他們整合一起時需要修改的地方。
1.將hive-site.xml 複製到spark_home/conf下
2.修改spark-env.sh
添加:
export HADOOP_HOME=/Users/luobao/study/hadoop-2.6.0
export SPARK_CLASSPATH=$SPARK_CLASSPATH:/Users/luobao/study/spark/lib/mysql-connector-java-5.1.34.jar

Spark on yarn
1.修改spark-env.sh
添加:
export HADOOP_HOME=/Users/luobao/study/hadoop-2.6.0

我也想寫多點,可是就是這麼簡單···

啓動程序:
1.啓動hadoop
cd $HADDOP_HOME/sbin
sh start-all.sh
2.啓動spark
cd $SPARK_HOME/sbin
sh start-all.sh
3.啓動spark的thrift服務(用來提供JDBC連接)
sh start-thriftserver.sh

這時候我們就可以在我們的程序中寫SQL來查詢spark了,例如
def main(args: Array[String]) {
  Class.forName("org.apache.hive.jdbc.HiveDriver")

  val conn: Connection = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "", "")
  val pstat: PreparedStatement = conn.prepareStatement("SELECT * from info where name='羅寶'")
  val rs: ResultSet = pstat.executeQuery
  while (rs.next) {
    println("track_time: " + rs.getString("name") )
  }
  rs.close
  pstat.close
  conn.close
}


我們去spark的UI上看下JOB執行情況

需要說的是,在我們執行查詢語句之前,我已經在HIVE裏創建了表,並且load了數據。
關於HIVE的操作可以查看這幾篇博客,或網上搜下。
有什麼問題留言或直接與我聯繫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章