通过阿里云实现存储和计算分离的数据仓库架构,扩展计算能力和存储方式。通过尝试三种不同的方案,对不同的技术方案做基本的了解。
0.数据仓库-存储和计算分离。
01.将计算和存储分开可以简化操作,用户可以分别扩展和管理计算和存储系统。
保证存储集群长期运行即可,计算集群可以随时使用随时创建
数据仓库在企业的数据汇总有着基础功能的作用,而目前的大数据技术系统也有着对数据仓库良好的支持。
传统和常见的数据仓库采用的架构多是存储和计算放在一起,而本文主要是汇总存储和计算分离的数据仓库架构。
通过阿里云提供的技术,实现数据仓库的云端化。
02.基于阿里云的数据仓库-技术方案:
存储层面上采用的OSS,
计算层面,可以采用 阿里云 E-MapReduce 作为计算集群,
亦可以采用阿里云 Maxcomputer 作为计算集群。
注意基于这种存储和计算分离的技术方案的瓶颈在哪里,要解决的问题在哪里: 将OSS作为数据源时存在的两类问题:数据读 和数据写问题
1.基于OSS+E-MapReduce构建数据仓库
步骤:
I、E-MapReduce集群运行程序
01.上传文件到OSS
方式一:通过OSSImport
前期环境准备:
1.本地的环境
本地需要有Java环境,且版本>=1.7
2.OSS端环境配置
001.在RAM控制台创建子帐号,并授权该子账号可访问OSS。
保存AccessKeyID和AccessKeySecret
002.区域-目的endpoint
003.bucket 设置
OSS的存储类型
3.下载并解压文件ossimport
解压的位置 C:\Items\ossimport
1.修改单机配置文件
单机的配置文件名是local_job.cfg
001.将 srcPrefix=d:/work/oss/data/
变为自己放置的数据
srcPrefix=c:/Data/MapData/crawData/
002.
destDomain=http://oss-cn-hangzhou-internal.aliyuncs.com
修改为
destAccessKey=LT***j216JVY6*
destSecretKey=*****oufMnfAX*
destDomain=http://oss-cn-shanghai.aliyuncs.com
destBucket=comp
destPrefix=alidata/
#目的bucket,不需要加上"/"
destBucket=
2.运行import.bat/import.sh为一键导入脚本
Window系统下在cmd.exe中执行import.bat,Linux终端中执行 bash import.sh
步骤:Windows下执行 import.bat,将命令行转到ossimport目录下,然后执行
cd C:\Items\ossimport
import.bat
02.开发并打Jar包
001.安装 E-MapReduce SDK--依赖关系
001、emr.version
com.aliyun.emr
emr-core
emr-sdk
002.oss.sdk.version
002.Spark 代码本地调试,调试结束后 打成Jar 包运行
"spark.hadoop.mapreduce.job.run-local"
这个配置项只是针对需要在本地调试 Spark 代码读写 OSS 数据的场景
03创建集群
创建集群后,您可以提交作业。
首先,创建集群
然后,您需要在 E-MapReduce 中创建一个作业,配置作业
最后,创建执行计划
04.执行集群命令
在 E-MapReduce 场景下设置 spark-submit 的参数。
--class org.apache.spark.examples.SparkPi --master yarn --deploy-mode client --driver-memory 4g --num-executors 2 --executor-memory 2g --executor-cores 2 /opt/apps/spark-1.6.0-bin-hadoop2.6/lib/spark-examples*.jar 10
--master yarn-cluster --driver-memory 5g --num-executors 15 --executor-memory 4g --executor-cores 4
spark-submit --master yarn-cluster --num-executors 2 --class com.abel.userCount /opt/jar/Spark_Amout.jar
注意事项:
01.常见错误: Jar包冲突
java.lang.ClassNotFoundException: org.apache.http.ssl.TrustStrategy
java.lang.NoClassDefFoundError: org/apache/http/ssl/TrustStrategy
依赖一个jar包往往会下载相互关联的jar包这就是依赖传递
:因为阿里云sdk自动依赖了httpclient-4.4.1和httpcore-4.4.1跟项目中引入的httpclient其他版本冲突了
https://yq.aliyun.com/ask/358
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4.1</version>
</dependency>
II、.Hive计算步骤
创建外部表以及命令
Hive并不会自动关联指定目录的partitions目录,需要手动操作 alter table storage_log add partition(ds=123);
-- 创建外部表
DROP TABLE IF EXISTS lt_da_item_external;
CREATE EXTERNAL TABLE IF NOT EXISTS lt_da_item_external
(
item_id string,
item_geohash string,
item_category string
)
STORED BY 'com.aliyun.odps.CsvStorageHandler'
WITH SERDEPROPERTIES (
'odps.properties.rolearn'='acs:ram::1**6061588274:role/aliyunodpsdefaultrole'
)
LOCATION 'oss://oss-cn-shanghai-internal.aliyuncs.com/comp/alidata/item/';
2.基于OSS+MaxCompute构建数据仓库
AliyunODPSDefaultRole
ODPS请求获取访问您云资源的权限
使用
DataWorks -数据工厂
包含数据集成-数据开发-数据运算MaxCompute
01.账号和权限
准备阿里云账号中的步骤检查账号是否已可用
Access Key
02.项目配置--注意依赖关系
项目名称
主账号登录DataWorks管理控制台创建MaxCompute项目
配置新建项目的基本信息和高级设置
开发工具与环境设置:
通过 MaxCompute Studio开发-开发者客户端的大数据集成开发环境工具:
Studio支持 MaxCompute SQL 和Java UDF 以及MapReduce的开发
Idea 创建MaxCompute项目链接 --项目空间连接管理
MaxCompute 项目浏览器 (Project Explorer)
end_point=http://service.odps.aliyun.com/api
使用Cost SQL估算费用 --阿里云Maxcomputer 内的支持,从OSS中读取数据是否支持?目前版本应该不支持,待确认!
3.基于OSS+DataLake Analytics构建数据仓库
新一代数据仓库- 数据湖
Source层 NoSQL RDBMS OSS 跨多路数据源
Serverless 分析层 Data Lake Analytics
结果层
BI-SaaS层
> CREATE SCHEMA my_test_schema with DBPROPERTIES
> (LOCATION= 'oss://compt/alidata/item/',
> catalog= 'oss') ;
>
> use my_test_schema
>
> CREATE EXTERNAL TABLE IF NOT EXISTS item_external
> (
> item_id string,
> item_geohash string,
> item_category string
> )
> ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
> LOCATION 'oss://compt/alidata/item/';
>
> show tables;
>
> desc item_external;
>
> SELECT * from item_external limit 100;
> DROP TABLE IF EXISTS item_external;
> show databases;
> DROP database my_test_schema;
3.名词注释:
RAM --权限管理机制包括访问控制(Resource Access Management,简称 RAM)
STS --和安全凭证管理(Security Token Service,简称 STS)
MaxCompute计费方式
按CU预付费:1CU包含的计算资源为4GB内存加上1核CPU
按量后付费
Bucket - 存储空间(Bucket)
控制地域、访问权限、生命周期
Object - 对象(Object)
对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成
OSS提供标准、低频访问、归档三种存储类型
Standard - Infrequent Access - Archive
Endpoint:Bucket所在数据中心的访问域名,您需要填写外网Endpoint
AccessKeyId,AccessKeySecret
数据转换过程中思考的问题:
结构化数据
半结构化数据:常见的半结构数据有XML和JSON
非结构化数据:各种文档、图片、视频/音频等都属于非结构化数据
一般直接整体进行存储,而且一般存储为二进制的数据格式
半结构化数据 转化为结构化数据
1. 常规的转化-健壮-以及易于定位问题和恢复
2.其他问题
数据量的考虑
变化维度的考虑
增加维度-历史数据怎么处理?
4.参考:
单机部署
https://help.aliyun.com/document_detail/57053.html?spm=a2c4g.11186623.6.1187.31a129d8QUKRRK
默认参数设置:
https://helpcdn.aliyun.com/document_detail/42802.html?spm=a2c4g.11186623.4.4.181f1aa1dmbB5j
E-MapReduce SDK 发布说明
https://www.alibabacloud.com/help/zh/doc-detail/43970.htm?spm=a2c63.p38356.b99.168.33f35afc9NZdfs
MaxCompute常用语句汇总(更新ing) https://yq.aliyun.com/articles/222955?utm_content=m_32180
帮助企业做好MaxCompute大数据平台成本优化的最佳实践 https://yq.aliyun.com/articles/257512?spm=5176.8091938.0.0.uoFG4n
OSS常用工具汇总
https://help.aliyun.com/document_detail/44075.html?spm=a2c4g.11186623.6.1161.64f7779c54ZqFa
https://yq.aliyun.com/ask/58660
MaxCompute Studio
https://help.aliyun.com/document_detail/50855.html?spm=a2c4g.11186623.2.4.3ac36fc2kukxGb