1. 程式人生 > >spark+hive win7開發環境配置

spark+hive win7開發環境配置

  典型配置:
  1. spark在linux中以standalone方式執行,配置引數如下:“spark-env配置引數 ”。
  2. 在windows idea中編輯程式碼,執行driver,連線遠端master,執行程式,可同步執行檢視日誌,可單步除錯
  3. 如果連線hive需要在本機src中配置hive-site.xml中的 hive.metastore.uris
  4. 配置本地hadoop_home,下載winutils.exe,拷貝到hadoop_home/bin
  5. 參照下面虛擬機器中執行步驟7-9
  6. 如果多網絡卡,則需在本機配置SPARK_LOCAL_IP=叢集裡ip
  7. 在低配置機器上執行idea 有可能導致記憶體溢位,需要指定程式執行記憶體: -Xms128m -Xmx512m -XX:PermSize=250m -XX:MaxPermSize=512m

windows 需要配置環境變數 HADOOP_HOME ,HADOOP_USER_NAME

spark-env配置引數: # Where the pid file is stored. (Default: /tmp) 用於後臺執行spark export SPARK_PID_DIR=/var/run/spark # A string representing this instance of spark.(Default: $USER)
SPARK_IDENT_STRING=$USER

export HADOOP_HOME=${HADOOP_HOME:-/usr/hdp/current/hadoop-client}
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/usr/hdp/current/hadoop-client/conf}

# The java implementation to use. export JAVA_HOME=/usr/java/jdk1.7.0_67 export SPARK_MASTER_IP=master1 # 應小於master cpu個數,如果設定為master節點最大cpu個數,則會報:WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=2"

if [ -d "/etc/tez/conf/" ]; then
  export TEZ_CONF_DIR=/etc/tez/conf
else
  export TEZ_CONF_DIR=
fi 虛擬中執行步驟:     軟體:hdp2.3.2虛擬機器,vmware,gnome,idea 15
  1. 下載hdp虛擬機器
  2. 修改虛擬機器dns,vi  /etc/resolve,增加本地dns,預設為google dns,否則很多網站ping或連線不穩定。
  3. 增加dev使用者
  4. 下載idea,上傳到虛擬機器,解壓,執行。
  5. 下載scala外掛,建立scala工程,設定jar檔案,需要匯入spark/lib下所有jar檔案
  6. 設定sparkmaster, 必須用spark://sandbox.hortonworks.com:7077,在spark worker啟動日誌裡面找到,或ps -ef檢視worker程序引數,如果是用ip,則報錯 one。。stragy
  7. 匯入hive-site.xml檔案到src,不然會報 ,表找不到。

測試程式碼

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.hive.HiveContext

/**
 * Created by czp on 2015/11/2.
 */
object SparkHiveRun {

  def main(args: Array[String]): Unit = {

    val sparkConf = new SparkConf().setAppName("HiveFromSpark").setMaster("spark://master1:7077")
    val sc = new SparkContext(sparkConf)

    val hiveContext = new HiveContext(sc)
    // import hiveContext.implicits._
import hiveContext.sql

    // Queries are expressed in HiveQL
println("Result of 'SELECT *': ")
    sql("SELECT * FROM test_part").collect().foreach(println)

    // Aggregation queries are also supported.
val count = sql("SELECT COUNT(*) FROM test_part").collect().head.getLong(0)
    println(s"COUNT(*): $count")



  }

}
hive-site
<!--Sat Oct 10 23:00:44 2015-->
<configuration>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node6:9083</value>
    </property>
</configuration>