hdfs->obs翻译使用
hdfs->obs翻译使用说明
功能说明:通过HDFS地址映射到OBS地址的方式,支持将线下数据迁移到OBS后,不需要变动业务逻辑中的数据地址。
用户场景:1. 客户端不能修改自己的的业务代码逻辑的情况下,实现上云,将数据从HDFS文件系统迁移到OBS系统,通过使用翻译功能简单配置即可访问存储到OBS的数据。
2. 将元数据信息从HDFS文件系统部分迁移到OBS,通过使用翻译功能简单配置即可既能访问存储到OBS的数据又可以访问存储在HDFS文件系统的数据。
注意:不支持使用WebHdfsFileSystem (A FileSystem for HDFS over the web.)的rest api访问的场景。
一 通过hadoop客户端命令操作hdfs(/path方式或hdfs://namespace/path方式)
1. 修改hdfs用到的 core-site.xml文件:
vim /opt/client/HDFS/hadoop/etc/hadoop/core-site.xml
2.加入如下property,并保存:
<property>
<name>fs.hdfs.mounttable.hacluster.link./var</name>
<value>obs://obs-5486-bnn/job/yy</value>
</property>
<property>
<name>fs.hdfs.impl</name>
<value>com.huawei.hadoop.MRSHDFSWrapperFileSystem</value>
</property>
<property>
<name>fs.obs.endpoint</name>
<value>obs.cn-north-5.myhuaweicloud.com</value>
</property>
注意:标红的hacluster是core-site.xml配置中fs.defaultFS的值的namespace,若你修改了默认fs.defaultFS的配置的namespace,’hacluster’修改对应的值即可。
使用示例:
1)hdfs://namespace/方式
hadoop fs -mkdir -p hdfs://hacluster/var/test
hadoop fs -put abc.txt hdfs://hacluster/var/test/
hadoop fs -ls hdfs://hacluster/var/test
2)hadoop命令行(不加namespace)
hadoop fs -mkdir -p /var/test
hadoop fs -put abc.txt /var/test/
hadoop fs -ls /var/test
二 通过hadoop客户端命令操作hdfs(hdfs://namenodeIp:port/path)
1. 修改hdfs用到的 core-site.xml文件:
vim /opt/client/HDFS/hadoop/etc/hadoop/core-site.xml
2.假如你有两个namenode,ip分别为namenodeIp1,namenodeIp2,端口号都是port(HDFS NameNode RPC端口号。 【默认值】9820),加入如下property,并保存:(注意:使用这种方式需要配置所有namenode的namenodeIp:port对应的映射)
<property>
<name>fs.hdfs.mounttable.hacluster.link./var</name>
<value>obs://obs-5486-bnn/job/yy</value>
</property>
<property>
<name>fs.hdfs.mounttable.namenodeIp1:port.link./var</name>
<value>obs://obs-5486-bnn/job/yy</value>
</property>
<property>
<name>fs.hdfs.mounttable. namenodeIp2:port.link./var</name>
<value>obs://obs-5486-bnn/job/yy</value>
</property>
<property>
<name>fs.hdfs.impl</name>
<value>com.huawei.hadoop.MRSHDFSWrapperFileSystem</value>
</property>
<property>
<name>fs.obs.endpoint</name>
<value>obs.cn-north-5.myhuaweicloud.com</value>
</property>
注意:标红的hacluster是core-site.xml配置中fs.defaultFS的值的namespace,若你修改了默认fs.defaultFS的配置的namespace,’hacluster’修改对应的值即可。
使用示例:
hadoop fs -ls hdfs://192.168.1.91:9820/var/
三 通过hadoop客户端命令执行MR作业
1. 修改hdfs用到的 core-site.xml文件:
vim /opt/client/HDFS/hadoop/etc/hadoop/core-site.xml
2.加入如下property,并保存:
<property>
<name>fs.hdfs.mounttable.hacluster.link./var</name>
<value>obs://obs-5486-bnn/job/yy</value>
</property>
<property>
<name>fs.hdfs.impl</name>
<value>com.huawei.hadoop.MRSHDFSWrapperFileSystem</value>
</property>
<property>
<name>fs.obs.endpoint</name>
<value>obs.cn-north-5.myhuaweicloud.com</value>
</property>
注意:标红的hacluster是core-site.xml配置中fs.defaultFS的值的namespace,若你修改了默认fs.defaultFS的配置的namespace,’hacluster’修改对应的值即可。
3. 修改yarn用到的 core-site.xml文件:
vim /opt/client/Yarn/config/core-site.xml
4. 加入如下property,并保存:
<property>
<name>fs.hdfs.mounttable.hacluster.link./var</name>
<value>obs://obs-5486-bnn/job/yy</value>
</property>
<property>
<name>fs.hdfs.impl</name>
<value>com.huawei.hadoop.MRSHDFSWrapperFileSystem</value>
</property>
<property>
<name>fs.obs.endpoint</name>
<value>obs.cn-north-5.myhuaweicloud.com</value>
</property>
注意:标红的hacluster是core-site.xml配置中fs.defaultFS的值的namespace,若你修改了默认fs.defaultFS的配置的namespace,’hacluster’修改对应的值即可。
使用示例:
将wordcount结果写入obs目录
hadoop jar /opt/share/hadoop-mapreduce-examples-2.8.3-mrs-1.9.0/hadoop-mapreduce-examples-2.8.3-mrs-1.9.0.jar wordcount /yy /yy/test10
四 通过hive beeline jdbc访问hdfs数据
前提:1. 集群默认的文件系统是hdfs。即fs.defaultFS的配置项是hdfs://开始。
2. 集群详情页面配置默认委托。
进入集群详情页配置步骤如下图:
进入节点管理:(确保每个节点都已经选择了默认委托)
正式使用步骤:
1. 进入MRS管理页面后
2. 服务管理页签中选择Hive 服务
3. 服务配置中选择全部配置
4. 自定义配置中增加如下配置:
fs.hdfs.impl->com.huawei.hadoop.MRSHDFSWrapperFileSystem
fs.hdfs.mounttable.hacluster.link./yy->obs://obs-5486-yyp/job/yy
注意:标红的hacluster是core-site.xml配置中fs.defaultFS的值的namespace,若你修改了默认fs.defaultFS的配置的namespace,’hacluster’修改对应的值即可。
映射的键”.link”字符串后的目录不能使用这些目录/tmp/hive-scratch、/tmp/hive、/apps、/datasets、/mrs、/user及其子目录。这些目录下的文件hive启动过程要用到。
5. 点击保存配置,勾选重新启动受影响的服务或实例
使用示例:
比如你hive on spark使用如下语句创建一个表,表将存入obs://obs-5486-yyp/job/yy/sparktest文件夹下面。
drop table if exists Table_spark_sql;
create external table Table_spark_sql(line string, id string) row format delimited fields terminated by "," stored as textfile location "hdfs://hacluster/yy/sparktest";
insert into Table_spark_sql values("v3456","ffff");
五 通过presto_cli.sh jdbc访问hdfs数据
前提:集群详情页面配置默认委托。
进入集群详情页配置步骤如下图:
进入节点管理:(确保每个节点都已经选择了默认委托)
正式使用步骤:
1. 进入MRS管理页面后
2. 服务管理页签中选择Presto服务
3. 服务配置中选择全部配置
4. 参数类别选择Hive自定义配置core.site.customized.configs中增加如下配置:
fs.hdfs.impl->com.huawei.hadoop.MRSHDFSWrapperFileSystem
fs.hdfs.mounttable.hacluster.link./yy->obs://obs-5486-yyp/job/yy
若你是用root用户访问数据:
fs.hdfs.mounttable.hacluster.link./tmp/presto-root->obs://obs-5486-bnn/job/presto_root/
注意:此项配置的键必须跟这里(fs.hdfs.mounttable.hacluster.link./tmp/presto-root)一致,presto内核代码的临时目录产生是在location的默认或者指定文件系统下创建的一个临时目录/tmp/presto-root。
若你是用omm用户访问数据:
fs.hdfs.mounttable.hacluster.link./tmp/presto-omm->obs://obs-5486-bnn/job/presto_omm/
注意:此项配置的键必须跟这里(fs.hdfs.mounttable.hacluster.link./tmp/presto-omm)一致,presto内核代码的临时目录产生是在location的默认或者指定文件系统下创建的一个临时目录/tmp/presto-omm。
同理,别的用户替换掉对应的用户名即可。
注意:标红的hacluster是core-site.xml配置中fs.defaultFS的值的namespace,若你修改了默认fs.defaultFS的配置的namespace,’hacluster’修改对应的值即可。
5. 点击保存配置,勾选重新启动受影响的服务或实例
使用示例:
比如你presto on hive使用如下语句创建一个表,表将存入obs://obs-5486-yyp/job/yy/ presto文件夹下面。
presto_cli.sh
use hive.default;
CREATE TABLE mcs_test1 ( field1 bigint, field2 bigint) WITH ( format='TEXTFILE', external_location='hdfs://hacluster/yy/presto');
INSERT INTO mcs_test1 VALUES (3, 3);
六 通过MRS服务安装的组件flink提交作业
1. 进入MRS管理页面后
2. 服务管理页签中选择Yarn 服务
3. 服务配置中选择全部配置
4. 自定义配置中增加如下配置:
fs.hdfs.impl->com.huawei.hadoop.MRSHDFSWrapperFileSystem
fs.hdfs.mounttable.hacluster.link./yy->obs://obs-5486-yyp/job/yy
注意:标红的hacluster是core-site.xml配置中fs.defaultFS的值的namespace,若你修改了默认fs.defaultFS的配置的namespace,’hacluster’修改对应的值即可。
5. 点击保存配置,勾选重新启动受影响的服务或实例
使用示例:
执行如下命令启动session,并在session中提交作业。
yarn-session.sh -nm "session-name"
flink run /opt/client/Flink/flink/examples/streaming/WordCount.jar --input hdfs://hacluster/yy/ --output hdfs://hacluster/yy/test
执行如下命令在Yarn上提交单个作业。
flink run -m yarn-cluster -ynm "test" /opt/client/Flink/flink/examples/streaming/WordCount.jar --input hdfs://hacluster/yy/ --output hdfs://hacluster/yy/test
七 提交Spark作业或者执行Spark SQL
1. master节点修改spark用到的core-site.xml文件:
vim /opt/client/Spark/spark/conf/core-site.xml
2.加入如下配置,并保存:
<property>
<name>fs.hdfs.mounttable.hacluster.link./yy</name>
<value>obs://obs-5486-bnn/job/yy</value>
</property>
<property>
<name>fs.hdfs.impl</name>
<value>com.huawei.hadoop.MRSHDFSWrapperFileSystem</value>
</property>
注意:标红的hacluster是core-site.xml配置中fs.defaultFS的值的namespace,若你修改了默认fs.defaultFS的配置的namespace,’hacluster’修改对应的值即可。
使用示例:
Spark作业:
spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.JavaWordCount /opt/client/Spark/spark/examples/jars/spark-examples_2.11-2.2-mrs-1.9.0.jar hdfs://hacluster/yy/test(java代码的spark wordcount最后结果是打印到控制台)
spark-submit --master yarn --deploy-mode client wordcount.py hdfs://hacluster/yy/ hdfs://hacluster/yy/test
spark-submit --master yarn --deploy-mode cluster wordcount.py hdfs://hacluster/yy/ hdfs://hacluster/yy/test
Spark SQL:
cd /opt/client/Spark/spark/bin
执行 ./spark-sql --master yarn-client 进入Spark-sql:
DROP TABLE IF EXISTS Table_spark_sql;
create external table Table_spark_sql(line string, id string) row format delimited fields terminated by "," stored as textfile location "hdfs://hacluster/yy/sparktest";
insert into Table_spark_sql values("v3456","ffff");
八 通过spark beeline jdbc访问hdfs数据
前提:集群详情页面配置默认委托。
进入集群详情页配置步骤如下图:
进入节点管理:(确保每个节点都已经选择了默认委托)
正式使用步骤:
1. 进入MRS管理页面后
2. 服务管理页签中选择Spark 服务
3. 服务配置中选择全部配置
4. 参数类别选择JDBCServer自定义配置spark.core-site.customized.configs中增加如下配置:
fs.hdfs.impl->com.huawei.hadoop.MRSHDFSWrapperFileSystem
fs.hdfs.mounttable.hacluster.link./yy->obs://obs-5486-yyp/job/yy
注意:标红的hacluster是core-site.xml配置中fs.defaultFS的值的namespace,若你修改了默认fs.defaultFS的配置的namespace,’hacluster’修改对应的值即可。
5. 点击保存配置,勾选重新启动受影响的服务或实例
使用示例:
cd /opt/client/Spark/spark/bin/
./spark-beeline
DROP TABLE IF EXISTS Table_spark_sql;
create external table Table_spark_sql(line string, id string) row format delimited fields terminated by "," stored as textfile location "hdfs://hacluster/yy/sparktest";
insert into Table_spark_sql values("v3456","ffff");
- 点赞
- 收藏
- 关注作者
评论(0)