huangchuang 2020-05-26 820浏览量
对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件;E-MapReduce(EMR)构建于云服务器ECS上,基于开源的Apache Hadoop和Apache Spark,可以方便地使用Hadoop和Spark生态系统中的其他周边系统(例如,Apache Hive、Apache Pig和HBase等)来分析和处理数据;E-MapReduce还可以与阿里云的云数据存储系统OSS进行数据传输,把二者各自优势结合起来,使存储计算分离,方便快捷搭建大数据计算环境,实现大数据分析需求。
• 已注册阿里云账号,详情请参见注册阿里云账号。
• 已开通E-MapReduce服务和OSS服务。
• 已完成云账号的授权,详情请参见角色授权。
在使用spark 操作oss中的数据之前,您需要在本地安装MAVEN、JAVA、SCALA环境,以及在E-MapReduce上创建Hadoop集群。
增加两个配置项,分别为fs.jfs.cache.oss-accessKeyId、fs.jfs.cache.oss-accessKeySecret;
然后点击保存,以及右上方操作中重启组件;
hadoop fs -ls oss://your-bucket-name/dir/ #测试读OSS
hadoop fs -mkdir oss://your-bucket-name/dir/ #测试写OSS
import org.apache.spark.sql.{Row, SparkSession}
object WriteOSS {
def main(args: Array[String]): Unit = {
val spark = SparkSession
.builder
.appName("Spark OSS")
.getOrCreate()
val data=spark.read.json("oss://bucketname/test.json")
data.write.format("delta").save("oss://bucketname/test_delta_data")
}
}
• 使用scp工具把jar包传送到EMR集群的header节点上
• 把jar包拷贝到oss bucket下
./ossutil64 cp test.jar oss://bucket-name/dir
• 把jar包拷贝到本地集群hfs文件系统中
hadoop fs -put localfile hdfsfile
--class OSSReadWrite --master yarn --deploy-mode client
--driver-memory 5g --num-executors 50 --executor-memory 3g
--executor-cores 3 --conf spark.default.parallelism=500
--conf spark.yarn.am.memoryOverhead=1g
--conf spark.yarn.am.memory=2g
oss://your-bucket-name/test.jar
至此,我们就完成了从创建EMR hadoop集群,配置好OSS数据源,开发OSS读写作业,数据开发中创建test job,提交作业,并且查看运行日志一系列操作。
在此基础之上,我们可以根据个人需求,进行其他作业开发,分析利用OSS上存储的数据。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
大数据计算实践乐园,近距离学习前沿技术