spark-1.6.0-cdh5.8.3安装

本文详细介绍了如何在CDH 5.8.3环境下安装Spark 1.6.0,包括Scala的安装、Spark的解压配置、环境变量设置以及遇到的异常问题如NoClassDefFoundError,并提供了相应的解决办法,如添加依赖、修改配置等。最后提到了在Eclipse中使用Maven项目提交代码到Linux集群的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载tar包:
spark-1.6.0-cdh5.8.3.tar.gz
scala-2.11.7.tgz

scala安装:
将scala下载到/usr/scala中并解压
在/etc/profile export SCALA_HOME=/usr/scala/scala-2.11.7
并将scala的path添加到环境变量中

进入到/usr/bin目录中并建立软连接:ln -s /usr/scala/scala-2.11.7/bin/scala scala
命令行中输入scala看看是否可以运行

spark 1.6.0安装:
创建目录
mkdir -p /usr/local/spark
生成用户
groupadd spark
useradd -r -s /sbin/nologin -g spark spark -d /usr/local/spark
解压spark到指定目录
tar -zxvf spark-1.6.0-cdh5.8.3.tar.gz -C /usr/local/spark
rm -rf spark-1.6.0-cdh5.8.3.tar.gz

配置spark-env.sh:配置了spark运行时的一些环境、依赖项以及master和slaver的资源配置

export JAVA_HOME=/usr/java/jdk1.8   #Java环境变量
export SCALA_HOME=/usr/scala/scala-2.11.7 #SCALA环境变量
export HADOOP_HOME=/usr/local/hadoop  #Hadoop路径
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop #Hadoop配置目录
export SPARK_DIST_CLASSPATH=$(hadoop classpath)

配置spark-default.conf

spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://ha/eventLogs
spark.eventLog.compress          true
spark.serializer                 org.apache.spark.serializer.KryoSerializer
spark.master                     yarn 

配置完后启动spark-shell出现异常:
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream
从spark1.4以后,所有spark的编译都是没有将hadoop的classpath编译进去的,所以必须在spark-env.sh中指定hadoop中的所有jar包。
官网是这么说的

# If 'hadoop' binary is on your PATH
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
# With explicit path to 'hadoop' binary
export SPARK_DIST_CLASSPATH=$(/path/to/hadoop/bin/hadoop classpath)
# Passing a Hadoop configuration directory
export SPARK_DIST_CLASSPATH=$(hadoop --config /path/to/configs classpath)

第二个异常:
java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/Module
因为都是CDH对应的版本,Jar包缺失的问题
maven添加一下依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-databind</artifactId>
     <version>2.4.4</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.4.4</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.4.4</version>
</dependency>

将jar包放到spark的classpath下。
第三个异常:
Operation category READ is not supported in state standby. Visit https://s.apache.org/sbnn-error
将spark-default.conf中的配置spark.eventLog.dir 中的ip改成ha
第4个异常:
java.lang.NoClassDefFoundError: parquet/hadoop/ParquetOutputCommitter

<dependency>
    <groupId>com.twitter</groupId>
    <artifactId>parquet-hadoop</artifactId>
    <version>1.4.3</version>
</dependency>

添加这些jar包

启动后正常运行
在这里插入图片描述
在eclipse中依赖spark-jar包,然后提交代码到linux集群。
创建maven项目spark,然后到spark-assembly-1.6.0-hadoop2.6.0所在的目录执行如下命令:

mvn install:install-file -Dfile=spark-assembly-1.6.0-cdh5.8.3-hadoop2.6.0-cdh5.8.3.jar -DgroupId=org.apache.spark -DartifactId=spark-assembly-1.6.0-cdh5.8.3 -Dversion=1.6.0 -Dpackaging=jar

然后在maven项目的pom.xml文件中添加一下依赖:

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-assembly-1.6.0-cdh5.8.3</artifactId>
    <version>1.6.0</version>
</dependency>

一般maven项目导包没有这么麻烦,但是我将把本地jar包放上去是这么做的。不想依赖整个spark jar包

spark 本地调试的连接:
https://blog.csdn.net/xsdxs/article/details/52203922

参考博客:
https://www.jianshu.com/p/a4ef73428097
https://www.cnblogs.com/zdfjf/p/5175566.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值