如何在集群上运行Shark

来源:互联网 发布:ssh 远程端口转发 编辑:程序博客网 时间:2024/06/09 19:43

如何在集群上运行Shark

本文介绍在计算机集群上如何启动和运行Shark。如果对Amazon EC2上运行Shark感兴趣,请点击这里查看如何使用EC2脚本快速启动预先配置好的集群。

依赖:

注意:Shark是一个即插即用的工具,所以可以在现有的Hive数据仓库之上运行,不需要您对现有的部署做出任何修改。

在集群上运行Shark需要一下几个外部组件:

  • Scala 2.9.3
  • Spark 0.7.2
  • 兼容的JAVA运行时环境:OpenJDK 7, Oracle HotSpot JDK 7,或者 Oracle HotSpot JDK 6u23+
  • Shark专用的 Hive JAR (基于Hive 0.9),包括在Shark发布包里。
  • HDFS 集群:在这里不介绍如何安装,可以查看我的博文.

Scala

如果系统里没有安装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的单独部署模式运行Shark

部署细节:|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的主机名称,每一行对应一个Salve

编辑spark-0.7.2/conf/spark-env.sh设置SCALA_HOMESPARK_WORKER_MEMORY

export SCALA_HOME=/path/to/scala-2.9.3

export SPARK_WORKER_MEMORY=16g

SPARK_WORKER_MEMORY Spark在每一个节点上可用内存的最大,增加这个数值可以在内存中缓存更多的数据,但是一定要记住给Slave的操作系统和其他服务预留足够的内存。

Shark

下载Shark 0.2.1发布包,里边包括 shark-0.2.1hive-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设置HIVE_HOME, SCALA_HOMEMASTER环境变量(参考如下):

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命令通常用于重新执行刚修改的初始化文件,使之立即生效)

最后一行是为了避免重复设置SCALA_HOME。一定要确保SPARK_MEM的数值不能超过前面设置的SPARK_WORKER_MEMORY的数值.

如果是在现有的Hive上运行Shark,确定设置 HIVE_CONF_DIR (shark-env.sh文件中)指向你的配置文件夹.也可以,复制 Hive XML配置文件到Sharkhive-0.9.0-bin/conf配置文件夹内,比如:

cp /etc/hive/conf/*.xml /path/to/hive-0.9.0-bin/conf/

复制 Spark Shark目录到所有的slaves.前提是master的用户可以实现无密码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

运行 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)中进行配置:

  • fs.default.name: 指向HDFS namenode.例如:hdfs://myNameNode:8020/
  • fs.defaultFS: fs.default.name设置为同样值。
  • mapred.job.tracker:设置为JobTracker,格式为host:port。如果仅仅运行Spark可以设置为"NONE"。注意:一定要明确设置这个选项,即使不使用JobTracker.

测试

使用如下命令,启动Shark

$ ./bin/shark-withinfo

关于Spark单独模式的更多脚本细节参考这里。

To verify that Shark is running, you can try the following example, which creates a table with sample data:

使用下面的命令,创建一个简单的表格就可以确认一下Shark是否可以运行。

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;

更详细的学习Shark,可以查看官方网站的用户指南。

 

原创粉丝点击