zoukankan      html  css  js  c++  java
  • Spark 0.9.1和Shark 0.9.1分布式安装指南

    目录

    目录 1

    1. 约定 1

    2. 安装Scala 1

    2.1. 下载 2

    2.2. 安装 2

    2.3. 设置环境变量 2

    3. 安装Spark 2

    3.1. 部署 2

    3.2. 下载 3

    3.3. 安装 3

    3.4. 配置 3

    3.4.1. 修改conf/spark-env.sh 3

    3.4.2. 修改conf/slaves 3

    4. 启动Spark 3

    5. 安装Shark 4

    5.1. 下载 4

    5.2. 安装 4

    5.3. 配置 4

    5.3.1. 修改shark-env.sh 4

    6. 启动Shark 4

    7. 执行Shark命令 5

    8. 常见错误 5

    9. 相关文档 6

    1. 约定

    本文约定Hadoop 2.4.0安装在/data/hadoop/current,而Spark 0.9.1被安装在/data/hadoop/spark,其中/data/hadoop/spark为指向/data/hadoop/spark

    Spark官网为:http://spark.apache.org/Shark官网为:http://shark.cs.berkeley.edu/

    2. 安装Scala

    联邦理工学院洛桑(EPFL)的Martin Odersky2001年基于Funnel的工作开始设计Scala

    Scala是一种多范式的编程语言,设计初衷是要集成纯面向对象编程和函数式编程的各种特性。运行在Java虚拟机JVM之上,兼容现有的Java程序,并可调用Java类库。Scala包含编译器和类库,以BSD许可证发布。

    2.1. 下载

    Spark使用Scala开发的,在安装Spark之前,先在各个节上将Scala安装好。Scala的官网为:http://www.scala-lang.org/,下载网址为:http://www.scala-lang.org/download/,本文下载的是二进制安装包scala-2.11.0.tgz。

    2.2. 安装

    本文以root用户(实则也可以非root用户,建议事先规划好)将Scala安装在/data/scala,其中/data/scala是指向/data/scala-2.11.0的软链接。

    安装方法非常简单,将scala-2.11.0.tgz上传到/data目录,然后在/data/目录下对scala-2.11.0.tgz进行解压。

    接着,建立软链接:ln -s /data/scala-2.11.0 /data/scala。

    2.3. 设置环境变量

    Scala被安装完成后,需要将它添加到PATH环境变量中,可以直接修改/etc/profile文件,加入以下内容即可:

    export SCALA_HOME=/data/scala

    export PATH=$SCALA_HOME/bin:$PATH

    3. 安装Spark

    Spark的安装以非root用户进行,本文以hadoop用户安装它。

    3.1. 部署

    本文的部署如下表格所示,主Master部署在172.25.39.166节点上:

    Master

    Master

    Slaves

    172.25.39.166

    172.25.40.171

    10.12.154.77

    10.12.154.78

    10.12.154.79

    10.12.154.80

    要求每个Slaves上都安装有Hive,否则会报“readObject can't find class org.apache.hadoop.hive.conf.HiveConf”错误。

    3.2. 下载

    本文下载的二进制安装包,推荐这种方式,否则编译还得折腾。下载网址为:http://spark.apache.org/downloads.html,本文下载的是spark-0.9.1-bin-hadoop2.tgz,这个可以直接跑在YARN上。

    3.3. 安装

    1) 将spark-0.9.1-bin-hadoop2.tgz上传到目录/data/hadoop

    2) 解压:tar xzf spark-0.9.1-bin-hadoop2.tgz

    3) 建立软链接:ln -s spark-0.9.1-bin-hadoop2 spark

    3.4. 配置

    3.4.1. 修改conf/spark-env.sh

    可以spark-env.sh.template复制一份,然后增加以下内容:

    export SCALA_HOME=/data/scala

    export JAVA_HOME=/data/jdk

    export SPARK_MASTER_IP=172.25.39.166

    3.4.2. 修改conf/slaves

    这个和配置HDFSslaves类似,一行一个slaveIP

    10.12.154.77

    10.12.154.78

    10.12.154.79

    10.12.154.80

    4. 启动Spark

    进入到Sparksbin目录,执行start-all.sh即可将Spark运行起来。使用浏览器打开“http://172.25.39.166:8080/”,即可看到Spark运行状况。“8080”是Sparkhttp端口。

    如果要以Server方式运行Spark,可以这样:

    $./bin/shark --service sharkserver <port>

    客户端可以这样去连接它:

    $./bin/shark -h <server-host> -p <server-port>

    5. 安装Shark

    使用Shark,需要先安装好Hive,并且得在所有Spark slaves机上都安装Hive,同时也得在所有Spark slaves机上安装Shark。有关Hive的安装,请参见《Hive 0.12.0安装指南》。

    5.1. 下载

    Shark官网:http://shark.cs.berkeley.edu/

    下载网址:https://github.com/amplab/shark/releases

    基于Yarn0.9.1版本下载链接:

    https://s3.amazonaws.com/spark-related-packages/shark-0.9.1-bin-hadoop2.tgz

    下载后的二进制安装包名为shark-0.9.1-bin-hadoop2.tgz。

    5.2. 安装

    本文将shark安装到/data/hadoop/shark,步骤为:

    1) 将shark-0.9.1-bin-hadoop2.tgz上传到主Master/data/hadoop目录

    2) 解压:tar xzf shark-0.9.1-bin-hadoop2.tgz

    3) 建立链连接:ln -s shark-0.9.1-bin-hadoop2 shark

    5.3. 配置

    5.3.1. 修改shark-env.sh

    shark-env.sh.template复制生成一份shark-env.sh,然后增加以下内容:

    export HADOOP_HOME=/data/hadoop/current

    export HIVE_HOME=/data/hadoop/hive

    export HIVE_CONF_DIR=$HIVE_HOME/conf

    export SPARK_HOME=/data/hadoop/spark

    export MASTER=spark://172.25.39.166:7077

    6. 启动Shark

    进入到Sharkbin目录,执行shark-withinfoshark-withdebugshark也可以的),进入Shark命令行操作界面,如果觉得shark-withinfo屏幕显示的信息太多,可以使用shark。另外,SharkHive一样,也有个beeline

    7. 执行Shark命令

    SharkHive是兼容的,可以像Hive一样操作。

    请参照:https://github.com/amplab/shark/wiki/Running-Shark-on-a-Cluster进行:

    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;

    8. 常见错误

    1) readObject can't find class org.apache.hadoop.hive.conf.HiveConf

    运行“select count(1) from src;”时,报如下所示的错误,但show databasesshow tables不会报错。建议使用shark-withinfo,以便看到更详细的信息。类org.apache.hadoop.hive.conf.HiveConf在包hive-common-0.12.0.jar中,估计在CLASSPATH中找不到hive-common-0.12.0.jar

    org.apache.spark.SparkException: Job aborted: Task 1.0:1 failed 4 times (most recent failure: Exception failure: java.lang.RuntimeException: readObject can't find class org.apache.hadoop.hive.conf.HiveConf)

            at org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$abortStage$1.apply(DAGScheduler.scala:1028)

            at org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$abortStage$1.apply(DAGScheduler.scala:1026)

            at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)

            at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)

            at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$abortStage(DAGScheduler.scala:1026)

            at org.apache.spark.scheduler.DAGScheduler$$anonfun$processEvent$10.apply(DAGScheduler.scala:619)

            at org.apache.spark.scheduler.DAGScheduler$$anonfun$processEvent$10.apply(DAGScheduler.scala:619)

            at scala.Option.foreach(Option.scala:236)

            at org.apache.spark.scheduler.DAGScheduler.processEvent(DAGScheduler.scala:619)

            at org.apache.spark.scheduler.DAGScheduler$$anonfun$start$1$$anon$2$$anonfun$receive$1.applyOrElse(DAGScheduler.scala:207)

            at akka.actor.ActorCell.receiveMessage(ActorCell.scala:498)

            at akka.actor.ActorCell.invoke(ActorCell.scala:456)

            at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:237)

            at akka.dispatch.Mailbox.run(Mailbox.scala:219)

            at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)

            at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)

            at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)

            at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)

            at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

    FAILED: Execution Error, return code -101 from shark.execution.SparkTask

    当使用shark-withinfo替代shark运行后,多了些信息:在DEVNET-154-77机器上找不到“org.apache.hadoop.hive.conf.HiveConf”,那么也就是需要在DEVNET-154-77机器上有hive-common-0.12.0.jar文件存在,并且可以找到它

    14/04/24 05:09:00 WARN scheduler.TaskSetManager: Lost TID 1 (task 1.0:1)

    14/04/24 05:09:00 INFO scheduler.TaskSetManager: Loss was due to java.lang.RuntimeException: readObject can't find class org.apache.hadoop.hive.conf.HiveConf [duplicate 1]

    14/04/24 05:09:00 INFO scheduler.TaskSetManager: Starting task 1.0:1 as TID 3 on executor 2: DEVNET-154-77 (PROCESS_LOCAL)

    14/04/24 05:09:00 INFO scheduler.TaskSetManager: Serialized task 1.0:1 as 4597 bytes in 0 ms

    网上找了很多办法,都不太好,最后摸索,在Spark的环境变量文件spark-env.sh中增加对环境变量CLASSPATH的设置,结果问题解决了(在此之前,试过在/etc/profile增加,没生效),另外保证每个Spark slaves上都有安装Shark,并且安装目录保持一致:

    export CLASSPATH=$CLASSPATH:/data/hadoop/hive/lib

    修改后,注意需要重启Spark,再运行Shark

    9. 相关文档

    HBase-0.98.0分布式安装指南》

    Hive 0.12.0安装指南》

    ZooKeeper-3.4.6分布式安装指南》

    Hadoop 2.3.0源码反向工程》

    《在Linux上编译Hadoop-2.4.0

    Accumulo-1.5.1安装指南》

    Drill 1.0.0安装指南》

    Shark 0.9.1安装指南》

    更多,敬请关注技术博客:http://aquester.cublog.cn

  • 相关阅读:
    Netty ByteBuf(图解之 2)| 秒懂
    【转】 RGB各种格式
    缺少动态库报错
    bug:进程可调用函数而子线程调用报错
    【转】 pthread设置线程的调度策略和优先级
    【转】 C++析构函数的作用和用法
    【转】 g++编译时对'xxxx'未定义的引用问题(undefined reference to)
    【转】 C语言文件操作详解
    【转】 H.264编码原理以及I帧B帧P帧
    【转】 strrchr()函数---C语言
  • 原文地址:https://www.cnblogs.com/aquester/p/9891600.html
Copyright © 2011-2022 走看看