日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kylin修改默认hbase namespace命名空间default的解决方案

發布時間:2025/3/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kylin修改默认hbase namespace命名空间default的解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題及背景:同一用戶的三家公司的物理集群合并,合并后用dataspace+kerberos控制不同公司對集群資料的訪問權限,三家公司分別使用獨立的kerberos票據訪問,特定的namespace,而生產環境部署的kylin-2.0/2.1只能保存cuboid到hbase 的 default namespace。

解決的過程及方案:
1、經多方查找發現, Kylin源碼github項目,最新的master分支已經支持更改存儲的hbase的默認namespace,但是官方對外發布的最新安裝包才更新到Kylin-2.1版本,且最新源碼并沒有經過生產的驗證,不敢冒然部署,于是想辦法在現有的版本上重新編譯源碼、打包。
2、經多方搜索確認更改hbase namespace的commit是kylin-2846,于是查找相關實現的細節。

解決思路:
1、首先按照github上提供的修改方法更改了https://github.com/apache/kylin/commit/ffcbdb7f4288fa6011f018163bdce9602415cf10
中的五個類,重新編譯打包,執行到convert cuboid Data to HFile這一步的時候拋出異常,找不到Hbase表

org.apache.hadoop.hbase.TableNotFoundException:ISW:KYLIN_F3KD3ZC1LU at org.apache.hadoop.hbase.client.HBaseAdmin.getTableDescriptor(HBaseAdmin.java:575)

而這時,我在hbase shell指定的namespace查看,已經生成了hbase表,為什么會找不到呢?繼續查找原因
2、繼續找Kylin-2846相關的內容,發現有人遇到同樣的問題,地址:https://issues.apache.org/jira/browse/KYLIN-2846
原來github上給出的代碼少了很關鍵的一步:

---.../main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java | 2 +-1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java index 9f9b382..7a583ca 100644 --- a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java +++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java @@ -92,7 +92,7 @@ public class CubeHFileJob extends AbstractHadoopJob {attachCubeMetadata(cube, job.getConfiguration());Configuration hbaseConf = HBaseConfiguration.create(getConf()); - HTable htable = new HTable(hbaseConf, getOptionValue(OPTION_HTABLE_NAME).toUpperCase()); + HTable htable = new HTable(hbaseConf, getOptionValue(OPTION_HTABLE_NAME));// Automatic config !HFileOutputFormat.configureIncrementalLoad(job, htable); -- 1.9.1 具體的修改步驟如下:From 004e1bcb983442a1a2c69f7d1d6c09dc29d4301e Mon Sep 17 00:00:00 2001 From: Liu Shaohui <liushaohui@xiaomi.com> Date: Tue, 5 Sep 2017 15:50:29 +0800 Subject: [PATCH] Add a config of hbase namespace for cube storage---.../src/main/java/org/apache/kylin/common/KylinConfigBase.java | 4 ++++core-common/src/main/resources/kylin-defaults.properties | 3 +++core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java | 2 ++.../main/java/org/apache/kylin/storage/hbase/steps/BulkLoadJob.java | 2 +-.../main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java | 2 +-5 files changed, 11 insertions(+), 2 deletions(-)diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java index 749b515..3f53023 100644 --- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java +++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java @@ -712,6 +712,10 @@ abstract public class KylinConfigBase implements Serializable {return StorageURL.valueOf(url);}+ public String getHBaseStorageNameSpace() { + return getOptional("kylin.storage.hbase.namespace", "default"); + } +public String getHBaseClusterFs() {return getOptional("kylin.storage.hbase.cluster-fs", "");} diff --git a/core-common/src/main/resources/kylin-defaults.properties b/core-common/src/main/resources/kylin-defaults.properties index a3277ce..34fb5a0 100644 --- a/core-common/src/main/resources/kylin-defaults.properties +++ b/core-common/src/main/resources/kylin-defaults.properties @@ -65,6 +65,9 @@ kylin.source.hive.redistribute-flat-table=true# The storage for final cube file in hbasekylin.storage.url=hbase+# The namespace for hbase storage +kylin.storage.hbase.namespace=default +# Compression codec for htable, valid value [none, snappy, lzo, gzip, lz4]kylin.storage.hbase.compression-codec=nonediff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java index 043993c..484b977 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java @@ -684,11 +684,13 @@ public class CubeManager implements IRealizationProvider {}private String generateStorageLocation() { + String namespace = config.getHBaseStorageNameSpace();String namePrefix = IRealizationConstants.CubeHbaseStorageLocationPrefix;String tableName = "";Random ran = new Random();do {StringBuffer sb = new StringBuffer(); + sb.append(namespace).append(":");sb.append(namePrefix);for (int i = 0; i < HBASE_TABLE_LENGTH; i++) {sb.append(ALPHA_NUM.charAt(ran.nextInt(ALPHA_NUM.length()))); diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/BulkLoadJob.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/BulkLoadJob.java index 30616c5..d1caccb 100644 --- a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/BulkLoadJob.java +++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/BulkLoadJob.java @@ -47,7 +47,7 @@ public class BulkLoadJob extends AbstractHadoopJob {options.addOption(OPTION_CUBE_NAME);parseOptions(options, args);- String tableName = getOptionValue(OPTION_HTABLE_NAME).toUpperCase(); + String tableName = getOptionValue(OPTION_HTABLE_NAME);// e.g// /tmp/kylin-3f150b00-3332-41ca-9d3d-652f67f044d7/test_kylin_cube_with_slr_ready_2_segments/hfile/// end with "/" diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java index 1a624c4..9f9b382 100644 --- a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java +++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java @@ -68,7 +68,7 @@ public class CubeHFileJob extends AbstractHadoopJob {Path partitionFilePath = new Path(getOptionValue(OPTION_PARTITION_FILE_PATH));Path output = new Path(getOptionValue(OPTION_OUTPUT_PATH)); - String cubeName = getOptionValue(OPTION_CUBE_NAME).toUpperCase(); + String cubeName = getOptionValue(OPTION_CUBE_NAME);CubeManager cubeMgr = CubeManager.getInstance(KylinConfig.getInstanceFromEnv());-- 1.9.1 2、、、From 677400ee7b4cf5be0ddc9b595d80e02a0ba87c12 Mon Sep 17 00:00:00 2001 From: Liu Shaohui <liushaohui@xiaomi.com> Date: Fri, 15 Sep 2017 14:34:18 +0800 Subject: [PATCH] Addium for KYLIN-2846---.../main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java | 2 +-1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java index 9f9b382..7a583ca 100644 --- a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java +++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHFileJob.java @@ -92,7 +92,7 @@ public class CubeHFileJob extends AbstractHadoopJob {attachCubeMetadata(cube, job.getConfiguration());Configuration hbaseConf = HBaseConfiguration.create(getConf()); - HTable htable = new HTable(hbaseConf, getOptionValue(OPTION_HTABLE_NAME).toUpperCase()); + HTable htable = new HTable(hbaseConf, getOptionValue(OPTION_HTABLE_NAME));// Automatic config !HFileOutputFormat.configureIncrementalLoad(job, htable); -- 1.9.1 3、clean htablediff --git a/server-base/src/main/java/org/apache/kylin/rest/job/StorageCleanJobHbaseUtil.java b/server-base/src/main/java/org/apache/kylin/rest/job/StorageCleanJobHbaseUtil.java index 3728ea1..2d95542 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/job/StorageCleanJobHbaseUtil.java +++ b/server-base/src/main/java/org/apache/kylin/rest/job/StorageCleanJobHbaseUtil.java @@ -46,15 +46,28 @@ public class StorageCleanJobHbaseUtil {public static void cleanUnusedHBaseTables(boolean delete, int deleteTimeout) throws IOException {Configuration conf = HBaseConfiguration.create(); - CubeManager cubeMgr = CubeManager.getInstance(KylinConfig.getInstanceFromEnv()); + KylinConfig config = KylinConfig.getInstanceFromEnv(); + CubeManager cubeMgr = CubeManager.getInstance(config);// get all kylin hbase tablestry (HBaseAdmin hbaseAdmin = new HBaseAdmin(conf)) { - String tableNamePrefix = IRealizationConstants.SharedHbaseStorageLocationPrefix; + String namespace = config.getHBaseStorageNameSpace(); + StringBuffer sb = new StringBuffer(); + String tableNamePrefix = null; + if(namespace.equals("default") || namespace.equals("")){ + tableNamePrefix = IRealizationConstants.SharedHbaseStorageLocationPrefix; + }else{ + sb.append(config.getHBaseStorageNameSpace()).append(":"); + sb.append(IRealizationConstants.SharedHbaseStorageLocationPrefix); + tableNamePrefix = sb.toString(); + } +HTableDescriptor[] tableDescriptors = hbaseAdmin.listTables(tableNamePrefix + ".*"); +List<String> allTablesNeedToBeDropped = new ArrayList<String>();for (HTableDescriptor desc : tableDescriptors) { +String host = desc.getValue(IRealizationConstants.HTableTag); - if (KylinConfig.getInstanceFromEnv().getMetadataUrlPrefix().equalsIgnoreCase(host)) { + if (config.getMetadataUrlPrefix().equalsIgnoreCase(host)) {//only take care htables that belongs to self, and created more than 2 daysallTablesNeedToBeDropped.add(desc.getTableName().getNameAsString());}

修改完后,core-common, core-cure, storage-hbase三個目錄重新打jar包,覆蓋原Kylin安裝目錄KYLIN_HOME/tomcat/webapps/kylin.war下對應的jar包,重啟Kylin,問題解決。

總結

以上是生活随笔為你收集整理的Kylin修改默认hbase namespace命名空间default的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩欧美一区二 | 在线观看色网站 | 能看av的网站 | 大黑人交交护士xxxxhd | 四虎影院在线看 | 日韩精品一区在线视频 | 亚洲一区二区美女 | 91精品视频免费 | 国产无毛片 | 婷婷欧美 | 久久免费视频6 | 九一爱爱 | 国产人人干 | 日本免费黄色片 | 日本人和亚洲人zjzjhd | 亚洲偷怕| 成人一级视频 | 亚洲色图第一页 | 总裁憋尿呻吟双腿大开憋尿 | 亚洲欧洲免费无码 | 国产一区在线免费观看 | 亚洲精品一区二区三区影院忠贞 | 夫妻露脸自拍[30p] | 欧美精品在线一区二区三区 | 国产伦精品一区二区三区视频女 | 中文字幕第66页 | 最新黄色在线 | 亚洲一区二区三 | 中文字幕.com | 成人在线视频一区二区 | 天天想你在线观看完整版高清 | 日韩极品一区 | 精品人妻无码专区在线 | 精品伦精品一区二区三区视频 | javxxx| 日韩电影一二三区 | 永久免费,视频 | 午夜视频在线瓜伦 | 日韩美女性生活 | 国产精品久久久久久99 | a级黄色小视频 | 超碰超碰在线 | 99久久一区二区 | 亚洲精品手机在线 | 日韩中文字幕免费在线观看 | 牛牛电影国产一区二区 | 欧美日本三级 | 香蕉久久国产av一区二区 | 91精品国自产在线偷拍蜜桃 | 亚洲国产成人va在线观看天堂 | 草草网址 | 狠狠干五月天 | 99热91| 国产精品久久久久一区二区三区 | 日本特黄色片 | 国产精品中文字幕在线 | 香蕉蜜桃视频 | 日韩最新中文字幕 | 天天躁狠狠躁狠狠躁夜夜躁68 | 成人免费在线 | 操在线视频 | 国产精品视频一区在线观看 | 成人黄色电影网址 | 无码人妻aⅴ一区二区三区日本 | 亚洲韩国精品 | 三度诱惑免费版电影在线观看 | 免费精品在线 | 波多野结衣视频免费 | 天天爽夜夜爽 | 日韩少妇内射免费播放 | 久久精品噜噜噜成人88aⅴ | 精品国产传媒 | 青青色在线观看 | 在线精品观看 | 久久国产精品网站 | 在线观看污污视频 | 日本免费电影一区二区三区 | 成人免费在线小视频 | 一区二区三区播放 | 国产偷亚洲偷欧美偷精品 | 久久婷婷丁香 | 伊人久久大香线蕉av色婷婷色 | 日韩亚洲国产精品 | 亚洲永久| 体内射精一区二区 | 成人导航网站 | 国产精品亚洲成在人线 | sesese99| 欧美三级免费观看 | 中文在线永久免费观看 | 别揉我奶头啊嗯一区二区 | 久久影院午夜理论片无码 | 国产精品一二三区视频 | 夜夜夜久久久 | 受虐m奴xxx在线观看 | 男人av资源 | 午夜性生活片 | 老牛影视av一区二区在线观看 | av手机免费看 |