spark 1.1.0 on hadoop 2.4.1 安装笔记 (resourcemanager ha 支持)


java高级交流群:37341439 ,, 如果文章看不懂的,可以加群问我哦~~一起学习。


由于spark1.1.0还没正式发布只是v1.1.0-snapshot2 版本。但是hadoop2.4.1的resourcemanager ha 在spark 1.0.2版本还不支持(提交spark到yarn的时候。applicationmaster老是会请求本地的8030端口)。有兴趣的同志可以先提现体验一下。。

注意:spark 得在集群机器都安装哦。路径都一样。


1:进入解压后的spark源码目录
cd  /home/maven/spark-1.1.0-snapshot2

因为编译spark 需要很大内存。下载依赖也很花时间,而且很多依赖下载过程就卡死了。。,得一直取消,再重复编译。。。很可怕呢。。
export MAVEN_OPTS="-Xmx3g -XX:MaxPermSize=1024M -XX:ReservedCodeCacheSize=1024m"

修改 /home/maven/spark-1.1.0-snapshot2/pom.xml
找到 <protobuf.version>2.4.1</protobuf.version> 修改成你集群安装的protobuf版本 例如:我使用的是2.5.0<protobuf.version>2.5.0</protobuf.version>。不修改,编译完成后,提交job会找不到hadoop 的native等错误。。

2:进行编译
./make-distribution.sh  --tgz  --skip-java-test    -Dyarn.version=2.4.1   -Dhadoop.version = 2.4.1  -Pyarn  

3:编译成成功后生成的文件如下:
/home/maven/spark-1.1.0-snapshot2/spark-1.1.0-bin-.tgz

4:将编译好后的spark 文件copy到spark的home目录
mkdir /opt/spark
mkdir /opt/spark/lib
/home/maven/spark-1.1.0-snapshot2/spark-1.1.0-bin-.tgz   /opt/spark
tar -zxvf /opt/spark/spark-1.1.0-bin-.tgz
mv /home/maven/spark-1.1.0-bin-/* /opt/spark/

5创建spark用户,并将文件的权限赋予spark用户
useradd spark
password spark
chown -R spark.spark /opt/spark

6:为spark用户添加执行环境变量
export JAVA_HOME=/usr/java/jdk1.7.0_45
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_INSTALL=/opt/hadoop
export HADOOP_HOME=$HADOOP_INSTALL
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL

export SCALA_HOME=/usr/local/scala
export PATH=$SCALA_HOME/bin:$PATH

export SPARK_HOME=/usr/local/spark
export SPARK_JAR=/usr/local/spark/lib/spark-assembly-1.0.2-hadoop2.4.1.jar
export PATH=$SPARK_HOME/bin:$PATH


7:修改conf目录下的spark-env.sh,添加环境变量

export HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop
export YARN_CONF_DIR=$HADOOP_INSTALL/etc/hadoop

export SPARK_HOME=/opt/spark
export SPARK_JAR=/opt/spark/lib/spark-assembly-1.1.0-hadoop2.4.1.jar
export PATH=$SPARK_HOME/bin:$PATH

其中
export HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop
export YARN_CONF_DIR=$HADOOP_INSTALL/etc/hadoop
这2个变量任选其一

SPARK_JAR 必须指定。

8提交job 的命令
./bin/spark-submit --class org.apache.spark.examples.SparkPi \
    --master yarn-cluster \
    --num-executors 1 \
    --driver-memory 1g \
    --executor-memory 1g \
    --executor-cores 1 \
    lib/spark-examples*.jar \
    1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用Java语言编写的Spark读写Ozone的示例代码: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.ozone.OzoneConfiguration; import org.apache.hadoop.ozone.client.OzoneClient; import org.apache.hadoop.ozone.client.OzoneClientFactory; import org.apache.hadoop.ozone.client.OzoneVolume; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; public class SparkOzoneDemo { public static void main(String[] args) { // 创建Spark配置 SparkConf conf = new SparkConf().setAppName("SparkOzoneDemo"); // 创建Spark执行上下文 JavaSparkContext sc = new JavaSparkContext(conf); // 读取Ozone中的数据 JavaRDD<String> ozoneData = sc.textFile("o3://bucket.volume/key"); // 写入数据到Ozone Configuration hadoopConfig = new Configuration(); OzoneConfiguration ozoneConfig = new OzoneConfiguration(hadoopConfig); try (OzoneClient ozoneClient = OzoneClientFactory.getClient(ozoneConfig)) { OzoneVolume volume = ozoneClient.getObjectStore().getVolume("volumeName"); Path path = new Path("/key"); try (FileSystem fs = volume.getFileSystem()) { fs.create(path).write("data".getBytes()); } } // 关闭Spark执行上下文 sc.stop(); } } ``` 需要注意的是,该示例代码中的`o3://bucket.volume/key`需要替换成实际的Ozone对象路径,`volumeName`需要替换成实际的Ozone Volume名称。另外,该示例代码中使用了Hadoop-Ozone-Client的1.1.0版本,需要确保该版本的依赖已经正确引入。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值