如何在集群上运行Shark
如何在集群上運(yùn)行Shark
本文介紹在計算機(jī)集群上如何啟動和運(yùn)行Shark。如果對Amazon EC2上運(yùn)行Shark感興趣,請點擊這里查看如何使用EC2腳本快速啟動預(yù)先配置好的集群。
依賴:
注意:Shark是一個即插即用的工具,所以可以在現(xiàn)有的Hive數(shù)據(jù)倉庫之上運(yùn)行,不需要您對現(xiàn)有的部署做出任何修改。
在集群上運(yùn)行Shark需要一下幾個外部組件:
- Scala 2.9.3
- Spark 0.7.2
- 兼容的JAVA運(yùn)行時環(huán)境:OpenJDK 7, Oracle HotSpot JDK 7,或者 Oracle HotSpot JDK 6u23+
- Shark專用的 Hive JAR (基于Hive 0.9),包括在Shark發(fā)布包里。
- HDFS 集群:在這里不介紹如何安裝,可以查看我的博文.
Scala
如果系統(tǒng)里沒有安裝Scala 2.9.3,可以按提示下載:
$ wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.3.tgz
$ tar xvfz scala-2.9.3.tgz
Spark
采用Spark的單獨(dú)部署模式運(yùn)行Shark。
部署細(xì)節(jié):|http://spark-project.org/docs/latest/spark-standalone.html).也可以查看我翻譯的博文。
下載Spark:
$ wget http://spark-project.org/files/spark-0.7.2-prebuilt-hadoop1.tgz? # Hadoop 1/CDH3
或者
$ wget http://spark-project.org/files/spark-0.7.2-prebuilt-cdh4.tgz??? # Hadoop 2/CDH4
解壓縮:
$ tar xvfz spark-0.7.2-prebuilt*.tgz
編輯 spark-0.7.2/conf/slaves添加集群中Slaves的主機(jī)名稱,每一行對應(yīng)一個Salve。
編輯spark-0.7.2/conf/spark-env.sh設(shè)置SCALA_HOME和SPARK_WORKER_MEMORY
export SCALA_HOME=/path/to/scala-2.9.3
export SPARK_WORKER_MEMORY=16g
SPARK_WORKER_MEMORY 是Spark在每一個節(jié)點上可用內(nèi)存的最大,增加這個數(shù)值可以在內(nèi)存中緩存更多的數(shù)據(jù),但是一定要記住給Slave的操作系統(tǒng)和其他服務(wù)預(yù)留足夠的內(nèi)存。
Shark
下載Shark 0.2.1發(fā)布包,里邊包括 shark-0.2.1和hive-0.9.0-bin.
$ wget http://spark-project.org/download/shark-0.7.0-hadoop1-bin.tgz? # Hadoop 1/CDH3
或者
$ wget http://spark-project.org/download/shark-0.7.0-hadoop2-bin.tgz? # Hadoop 2/CDH4
解壓縮:
$ tar xvfz shark-0.7.0-*-bin.tgz
編輯shark-0.7.0/conf/shark-env.sh設(shè)置HIVE_HOME, SCALA_HOME和MASTER環(huán)境變量(參考如下):
export HADOOP_HOME=/path/to/hadoop
export HIVE_HOME=/path/to/hive-0.9.0-bin
export MASTER=spark://<MASTER_IP>:7077
export SPARK_HOME=/path/to/spark
export SPARK_MEM=16g
source $SPARK_HOME/conf/spark-env.sh
(source命令通常用于重新執(zhí)行剛修改的初始化文件,使之立即生效)
最后一行是為了避免重復(fù)設(shè)置SCALA_HOME。一定要確保SPARK_MEM的數(shù)值不能超過前面設(shè)置的SPARK_WORKER_MEMORY的數(shù)值.
如果是在現(xiàn)有的Hive上運(yùn)行Shark,確定設(shè)置 HIVE_CONF_DIR (在shark-env.sh文件中)指向你的配置文件夾.也可以,復(fù)制 Hive XML配置文件到Shark的hive-0.9.0-bin/conf配置文件夾內(nèi),比如:
cp /etc/hive/conf/*.xml /path/to/hive-0.9.0-bin/conf/
復(fù)制 Spark和 Shark目錄到所有的slaves.前提是master的用戶可以實現(xiàn)無密碼SSH登錄到所有的slaves.例如:
$ while read slave_host; do
$?? rsync -Pav spark-0.7.2 shark-0.7.0 $slave_host
$ done < /path/to/spark/conf/slaves
運(yùn)行 Spark的集群啟動腳本,啟動集群:
$ cd spark-0.7.2
$ ./bin/start_all.sh
基于CDH4/Hadoop2配置Shark
The newest versions of require additional configuration options.
新版本的Hadoop需要額外的配置選項。在Hive的配置文件(hive-site.xml)中進(jìn)行配置:
- fs.default.name: 指向HDFS 的namenode.例如:hdfs://myNameNode:8020/
- fs.defaultFS: 和fs.default.name設(shè)置為同樣值。
- mapred.job.tracker:設(shè)置為JobTracker,格式為host:port。如果僅僅運(yùn)行Spark可以設(shè)置為"NONE"。注意:一定要明確設(shè)置這個選項,即使不使用JobTracker.
測試
使用如下命令,啟動Shark
$ ./bin/shark-withinfo
關(guān)于Spark單獨(dú)模式的更多腳本細(xì)節(jié)參考這里。
To verify that Shark is running, you can try the following example, which creates a table with sample data:
使用下面的命令,創(chuàng)建一個簡單的表格就可以確認(rèn)一下Shark是否可以運(yùn)行。
CREATE TABLE src(key INT, value STRING);
LOAD DATA LOCAL INPATH '${env:HIVE_HOME}/examples/files/kv1.txt' INTO TABLE src;
SELECT COUNT(1) FROM src;
CREATE TABLE src_cached AS SELECT * FROM SRC;
SELECT COUNT(1) FROM src_cached;
更詳細(xì)的學(xué)習(xí)Shark,可以查看官方網(wǎng)站的用戶指南。
?
總結(jié)
以上是生活随笔為你收集整理的如何在集群上运行Shark的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python flask倒计时_Flas
- 下一篇: 微信公众平台支付 一直提示签名认证失败