草庐IT

CDH6.3.0上配置各种对象存储

江南独孤客 2023-03-28 原文

cm-hdfs:

ufile: 还需添加jar包

 

 

S3:是自带jar包

 

 

OSS: CDH6.3.0不需要下载包, CDH5需要

core-site.xml 的群集范围高级配置代码段(安全阀)

 

 

 

 

fs.oss.endpoint oss-eu-west-1.aliyuncs.com              #oss的外网地址
fs.oss.accessKeyId 
fs.oss.accessKeySecret 
fs.oss.impl org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem
fs.oss.buffer.dir /tmp/oss
fs.oss.connection.secure.enabled false    #是否enable https, 根据需要来设置,enable https会影响性能
fs.oss.connection.maximum 10000

#默认jar包位置:

/opt/cloudera/parcels/CDH-6.3.0-1.cdh6.3.0.p0.1279813/jars/aliyun-sdk-oss-2.8.3.jar
/opt/cloudera/parcels/CDH-6.3.0-1.cdh6.3.0.p0.1279813/jars/hadoop-aliyun-3.0.0-cdh6.3.0.jar

待测试:

cp  jindofs-sdk-2.3.0.jar  /opt/cloudera/parcels/CDH-6.3.0-1.cdh6.3.0.p0.1279813/jars/

参考链接:https://github.com/aliyun/alibabacloud-jindodata/blob/master/docs/jindofs_sdk_how_to_hadoop_cdh.md

把原有的aliyun-sdk-oss-2.8.3.jar做个备份删除,重启hdfs服务,看新报能不能用?

 

#在CDH中需在cm中配置(需测试)

hadoop-env.sh配置修改
打开文件: vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
在相应位置增加如下内容:

export HADOOP_OPTIONAL_TOOLS="hadoop-aliyun"
修改完成之后,重启Hadoop集群

注:CDH需要重启组件后要部署客户端。

 

#检查

 hdfs dfs -ls oss://dbbigdata/

hive建表语句

create external table if not exists dim_sony_dev_list_oss (
`ymd` string comment '日',
`uuid` string comment '当贝用户设备uuid',

`chanel` string comment '渠道',
`brand` string comment '品牌',
`packagename` string comment '包名',
`unit_type` string comment '型号',
`model` string comment '索尼机型',
`vcode` string comment '版本号',
`vname` string comment '版本名称',
`sony_user_id` string comment '索尼用户ID',
`user_id` string comment '当贝用户ID',
`ip` string comment '用户IP',
`province` string comment '省',
`city` string comment '市',
`region` string comment '区',
`add_time` string comment '设备新增时间(yyyy-MM-dd HH:mm:ss)',

`mac` string comment 'mac',

`cause1` string comment '2.6号以前的设备',
`cause2` string comment '同IP设备数量超过3个',
`cause3` string comment '门店展示,上报了com.sony.dtv.multiscreendemo(演示应用)的',
`cause4` string comment '上报了非sonyos_sonyos渠道的',
`cause5` string comment '国外IP',
`cause6` string comment '版本异常:低于1.0.1版本的',
`cause7` string comment '一个Mac下的uuid数量超过3个',
`cause8` string comment '在2.6号以前登陆过的用户',
`cause9` string comment '不在型号列表中的设备',

`ifblacklist` string comment '是否在黑名单库,1:是,0:否'

)
PARTITIONED BY (pt STRING)
row format delimited
fields terminated by '\001'
lines terminated by '\n'
STORED AS TEXTFILE
location 'oss://dbbigdata/hangwenping/dim_sony_dev_list_oss';

插入语句

set mapreduce.map.memory.mb=3072;
set mapreduce.reduce.memory.mb=3072;
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions.pernode=10000;
set hive.exec.max.dynamic.partitions=10000;
set hive.exec.max.created.files=10000;

insert overwrite table dim_sony_dev_list_oss partition(pt) select * from dim_sony_dev_list;

插入的时候报错:

Error while processing statement: FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Spark job failed due to: Class org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem not found

解决办法:

进入到hive  core-site.xml配置:

做spark impala  hive的软链接

impala的软链接

进入到impala的lib目录

cd  /opt/cloudera/parcels/CDH-6.3.0-1.cdh6.3.0.p0.1279813/lib/impala/lib

执行以下命令,所有的hive,impala,spark节点都要执行,可以用ansible,注ln -s要用绝对路径,我这里没有写。

进入到impala节点的目录
cd /opt/cloudera/parcels/CDH-6.3.0-1.cdh6.3.0.p0.1279813/lib/impala/lib

ln -s ../../../jars/hadoop-aliyun-3.0.0-cdh6.3.0.jar hadoop-aliyun-3.0.0-cdh6.3.0.jar
ln -s ../../../jars/aliyun-sdk-oss-2.8.3.jar aliyun-sdk-oss-2.8.3.jar
ln -s ../../../jars/jdom-1.1.jar jdom-1.1.jar



进入到spark的jars目录
cd /opt/cloudera/parcels/CDH-6.3.0-1.cdh6.3.0.p0.1279813/lib/spark/jars

ln -s ../../../jars/hadoop-aliyun-3.0.0-cdh6.3.0.jar hadoop-aliyun-3.0.0-cdh6.3.0.jar
ln -s ../../../jars/aliyun-sdk-oss-2.8.3.jar aliyun-sdk-oss-2.8.3.jar
ln -s ../../../jars/jdom-1.1.jar jdom-1.1.jar



进入到hive的lib目录执行
cd  /opt/cloudera/parcels/CDH-6.3.0-1.cdh6.3.0.p0.1279813/lib/hive/lib/

ln -s ../../../jars/hadoop-aliyun-3.0.0-cdh6.3.0.jar hadoop-aliyun-3.0.0-cdh6.3.0.jar
ln -s ../../../jars/aliyun-sdk-oss-2.8.3.jar aliyun-sdk-oss-2.8.3.jar
ln -s ../../../jars/jdom-1.1.jar jdom-1.1.jar

如下图:

查询语句
select * from dim_sony_dev_list_oss;

hive查询oss表中的数据

impala查询表中的数据

oss中的数据

有关CDH6.3.0上配置各种对象存储的更多相关文章

  1. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  2. ruby-on-rails - 按天对 Mongoid 对象进行分组 - 2

    在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  4. ruby-on-rails - 如何验证非模型(甚至非对象)字段 - 2

    我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss

  5. Ruby 写入和读取对象到文件 - 2

    好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信

  6. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  7. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  8. ruby-on-rails - 未在 Ruby 中初始化的对象 - 2

    我在Rails工作并有以下类(class):classPlayer当我运行时bundleexecrailsconsole然后尝试:a=Player.new("me",5.0,"UCLA")我回来了:=>#我不知道为什么Player对象不会在这里初始化。关于可能导致此问题的操作/解释的任何建议?谢谢,马里奥格 最佳答案 havenoideawhythePlayerobjectwouldn'tbeinitializedhere它没有初始化很简单,因为你还没有初始化它!您已经覆盖了ActiveRecord::Base初始化方法,但您没有调

  9. ruby - 如何在 Rails 4 中使用表单对象之前的验证回调? - 2

    我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser

  10. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

随机推荐