目录

目录 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 Odersky于2001年基于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

这个和配置HDFS的slaves类似,一行一个slave的IP:

10.12.154.77

10.12.154.78

10.12.154.79

10.12.154.80

4. 启动Spark

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

如果要以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

基于Yarn的0.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

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

7. 执行Shark命令

Shark和Hive是兼容的,可以像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 databases和show 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

Spark 0.9.1和Shark 0.9.1分布式安装指南的更多相关文章

  1. Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性

    Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性 Apache hadoop 项目组最新消息,hadoop3.x以后将会调整方案架构,将Mapreduce 基于内存+io+ ...

  2. Spark系列(一)Spark1.0.0源码编译及安装

    最近想对自己学的东西做些回顾,想到写博客是个不错的方式,方便他人也有利自己,刚开始写不足之处大家多担待. 编译前需要安装JDK1.6以上.scala.Maven.Ant.hadoop2.20 如下图( ...

  3. sparklyr包:实现Spark与R的接口+sparklyr 0.5

    本文转载于雪晴数据网 相关内容: sparklyr包:实现Spark与R的接口,会用dplyr就能玩Spark Sparklyr与Docker的推荐系统实战 R语言︱H2o深度学习的一些R语言实践-- ...

  4. spark编译安装 spark 2.1.0 hadoop2.6.0-cdh5.7.0

    1.准备: centos 6.5 jdk 1.7 Java SE安装包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java ...

  5. Spark 1.6.2 + Beam 2.0.0读取Mongodb数据进行相应逻辑处理

    不多说,直接上干货! http://blog.csdn.net/jianglushou9763/article/details/73332805 如果需要 APACHE BEAM2.0.0版本如何支持 ...

  6. HBase-1.2.1和Phoenix-4.7.0分布式安装指南

    目录 目录 1 1. 前言 2 2. 概念 2 2.1. Region name 2 3. 约定 2 4. 相关端口 3 5. 下载HBase 3 6. 安装步骤 3 6.1. 修改conf/regi ...

  7. HBase-0.98.0和Phoenix-4.0.0分布式安装指南

    目录 目录 1 1. 前言 1 2. 约定 2 3. 相关端口 2 4. 下载HBase 2 5. 安装步骤 2 5.1. 修改conf/regionservers 2 5.2. 修改conf/hba ...

  8. 环境篇:Kylin3.0.1集成CDH6.2.0

    环境篇:Kylin3.0.1集成CDH6.2.0 Kylin是什么? Apache Kylin™是一个开源的.分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析( ...

  9. 最新版大数据平台安装部署指南,HDP-2.6.5.0,ambari-2.6.2.0

    一.服务器环境配置 1 系统要求 名称 地址 操作系统 root密码 Master1 10.1.0.30 Centos 7.7 Root@bidsum1 Master2 10.1.0.105 Cent ...

随机推荐

  1. Linux 文件描述符详解

    Overview 了解Linux怎样处理输入和输出是非常重要的.一旦我们了解其原理以后,我们就可以正确熟练地使用脚本把内容输出到正确的位置.同样我们也可以更好地理解输入重定向和输出重定向. Linux ...

  2. RAC的时间同步问题

    今天在两个节点上面安装RAC,在安装clusterware的时候OUI总是提示失败.查到资料的得知: 特此记录: 需要在在所有的集群节点上设置正确的日期和时间 在安装 Oracle 集群件.数据库以 ...

  3. qcow2磁盘加密及libvirt访问

      1.创建qcow2加密磁盘[root@Coc-5 test_encrypt]# qemu-img convert -f qcow2 -O qcow2 -o encryption template_ ...

  4. Protobuf3教程

    Protobuf3教程 https://blog.csdn.net/hulinku/article/details/80827018 Protobuf语言指南——.proto文件语法详解 https: ...

  5. 装linux双系统

    一般的电脑都是一个盘的,只要分个区给linux就行了,好装.大概可以看看这篇:http://jingyan.baidu.com/article/c275f6bacc3326e33c756743.htm ...

  6. Abstract(抽象)

    谈到抽象,就先谈谈面向对象语言的三大特性,也是人们口中常说的封装.继承.多态. 封装:什么是封装,按到我的理解,封装就是把某些类的相关属性和方法封装,对内实现数据影城,对外提供稳定接口. 继承:从字面 ...

  7. C#枚举最优雅的用法

    public enum AbilityLevel { /// <summary> /// Indicates that the individual has a general knowl ...

  8. ASP.NET Web API(C#)学习01

    Web Api 记得去年公司有个分享会分享了这个,最近留意招聘信息的时候,发现有个招聘信息的要求是会用WebApi,然后花了半个小时不到,根据下面这篇文章了解了一下,觉得这个东西也不难啊. 突然发现在 ...

  9. Spring3开发(一)

    1 Ioc是什么? Ioc:Inversion of Control,控制反转,控制权从应用程序转移到框架(如Ioc容器),是框架的共有特性. 1.1 为什么需要IoC容器?IoC容器是如何演变的? ...

  10. Perl 引用:引用就是指针,Perl 引用是一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至子程序。

    Perl 引用引用就是指针,Perl 引用是一个标量类型可以指向变量.数组.哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方. 1.创建引用1.使用斜线\定义变量的时候,在变量名前面加个\, ...