CDH集群中集成AWS S3

介绍

    通过在CDH大数据计算集群中集成AWS S3(Simple Storage Service)的功能,可以方便将存放于AWS S3中的数据在Hive中进行分析,也方便将其它数据源的数据(如ES、MYSQL等),通过Hive写入到S3然后通过其它的数据仓库和BI工具进行分析和展示,其功能包括:

  • S3可以作为Impala表的存储
  • S3可以作为HDFS和Hive / Impala复制以及群集存储的源或目标
  • 启用Cloudera Navigator从Amazon S3存储中提取元数据
  • 使用Hue浏览S3数据
  • 通过Hive从S3中读取数据进行分析,并可以通过Hive做为中转,将S3和其它的数据源进行数据交换

开启的操作步骤

    在CDH中开启操作S3的功能,需要执行以下的操作:

    1.在AWS中开通S3的功能,并创建相应的桶;

    2.在AWS的账号管理中找到对应的Access Key和Secure Access Key,查看路径为:

    AWS管理控制台右上脚的登陆的账号名称 -> 点击下拉箭头选择My Security Credentials -> 左右菜单中的Users -> 点选对应的用户 -> 切换到用户的Security Credentials,该Tab页下方的Access keys就是需要的Key。

    每个账号可以有两个Access Key,用户的Secure Access Key需要用户自己保存,不能够通过管理界面查看,一旦用户遗忘,就只能够删除旧的Access Key然后才创建新的,这个需要注意。

    3.在CDH中配置AWS Credentials,只有管理员才能够操作,具体操作步骤如下:

    1)进入CDH的管理控制台,选择顶部菜单“Administrator -> External Accounts”;

    2)在“AWS Credentials” Tab页下,点击“Add Access Key Credentials”;

    3)根据指引填入AWS的Access Key和Secure Access Key,如果需要开通S3Guard功能,CDH会自动在AWS上创建对应的DynamoDB表,用于存放S3相关的元数据信息;

    4)之后就是重启生效;

    以上步骤参考:

    https://www.cloudera.com/documentation/enterprise/5-12-x/topics/cm_auth_aws.html#concept_p55_zzm_2y

    https://www.cloudera.com/documentation/enterprise/5-12-x/topics/cm_s3guard.html#untitled1

    5)为了能够让Hive,Yarn,MapReduce和Spark操作S3,需要在HDFS的core-site.xml中增加如下配置:    

  <property>
    <name>fs.s3.awsAccessKeyId</name>
    <value>Amazon S3 Access Key</value>
  </property>
  <property>
    <name>fs.s3.awsSecretAccessKey</name>
    <value>Amazon S3 Secret Key</value>
  </property>
  <property>
    <name>fs.s3a.access.key</name>
    <value>Amazon S3 Access Key</value>
  </property>
  <property>
    <name>fs.s3a.secret.key</name>
    <value>Amazon S3 Secret Key</value>
  </property>
  <property>
    <name>fs.s3n.awsAccessKeyId</name>
    <value>Amazon S3 Access Key</value>
  </property>
  <property>
    <name>fs.s3n.awsSecretAccessKey</name>
    <value>Amazon S3 Secret Key</value>
  </property>

    在CDH中可以做统一配置,进入HDFS -> Configuration -> 搜索"Cluster-wide Advanced Configuration Snippet (Safety Valve) for core-site.xml",然后点击配置项右边的“View as XML”,然后再把替换为了你的真实的账号后的值那上面一段配置,直接粘贴在这里即可,然后就是保存重启,并重新打包客户端。

    以上参考:

    https://www.cloudera.com/documentation/enterprise/5-12-x/topics/cm_s3_clients.html

    https://community.cloudera.com/t5/Batch-SQL-Apache-Hive/Impala-Hive-Hive-on-spark-with-S3/td-p/39464

验证

    1、准备一些测试数据

    分别准备一些json和csv测试,分别放在test_json和test_csv两个目录中,并将这两个目录放到s3中对应测试桶中,如其最终目录为s3://my_test_bucket/test_json和s3://my_test_bucket/test_csv。

    Json测试文件和Csv测试文件的格式如下:    

{"_id":"key1","key":"key1","value":"value1"}
{"_id":"key2","key":"key2","value":"value2"}
{"_id":"key3","key":"key3","value":"value3"}
...
id,title,price
1,title1,100
2,title2,200
3,title3,300
...

      2、在Hive中创建外部表    

create external table test_in_s3_json
(`_id` STRING,`key` string, `value` string)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
location 's3a://my_test_bucket/test_json/';

create external table test_in_s3_csv
(`id` int,`title` string, `price` int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION 's3a://my_test_bucket/test_csv/'
TBLPROPERTIES ("skip.header.line.count"="1");

    以上参考:

    http://qpleple.com/hive-how-to-create-a-table-from-csv-files

    https://hortonworks.github.io/hdp-aws/s3-hive/index.html    

    3、执行查询测试    

select * from test_in_s3_csv;
select * from test_in_s3_json;

    两个都可以正常查询出结果,说明已经配置成功了。

    4.查看HUE的界面,已经多了一个S3文件管理的Button

    

        验证完成。







评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值