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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Vertica系列:Vertica和Hadoop的互操作性

發(fā)布時(shí)間:2023/12/13 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 Vertica系列:Vertica和Hadoop的互操作性 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Vertica 8和 Hadoop 集群的互操作性已經(jīng)很不錯(cuò)的, 但這塊肯定是Vertica研發(fā)的重點(diǎn), 將來可能還有較大的變動(dòng).

Vertica 集群 和 Hadoop 集群的兩種布局方式

集群布局 描述 許可證 支持Vertica for SQL on Hadoop特性
共享集群 Vertica 節(jié)點(diǎn)部署在 Hadoop 所有節(jié)點(diǎn)或部分節(jié)點(diǎn)上 Vertica for SQL on Hadoop 許可證 支持
分離集群 Vertica 集群和 Hadoop 分屬不同的集群 社區(qū)版或Premium版許可證 不支持

從目前情況下, 還是推薦使用分離模式, 主要原因有:

共存模式需要為 yarn 和 Vertica 分別分配合適的計(jì)算資源, 操作難度較大.
存儲(chǔ)方面 Vertica 推薦采用 Raid10 或 Raid50, 而 HDFS 不推薦使用 Raid.
Hadoop Balancer功能很可能會(huì)影響Vertica的執(zhí)行效率(通常情況下Vertica僅僅部署在集群中的幾臺(tái)).

但長期看, 共享集群應(yīng)該是Vertica重點(diǎn)的發(fā)展方向, HAWQ 就是這個(gè)思路. 從目前看到的資料, Vertica 9將有很大的進(jìn)展.

Vertica 和 Hadoop 互操作方式匯總

方法 描述 推薦 效率 必須共享集群嗎
Reading Directly from HDFS 以External table 或 bulk load的方式讀取HDFS上的格式化文件 Recommended 無需
HCatalog Connector 使用Vertica SQL的方式訪問 Hive 的數(shù)據(jù)表 中低 無需
HDFS Connector 以External table 或 bulk load的方式讀取HDFS上的格式化文件 Deprecated 無需
ROS Containers on HDFS 在HDFS上存放Vertica ROS文件 必須
MapReduce Connector 使用MapReduce或Pig來訪問 HDFS 上的數(shù)據(jù) 中/低 ?
Export to Parquet 導(dǎo)出Parquet文件到本地或HDFS上 無需
ParallelExport 導(dǎo)出文件到本地或HDFS上 無需

讀取原生 Hadoop 文件格式

在官網(wǎng)中好像叫做Reading Directly from HDFS 方式 或 HDFS Schema 方式.
該方法是用來替代 HDFS Connector 方法. 在使用該方法之前, Vertica 節(jié)點(diǎn)應(yīng)能訪問 Hadoop 配置文件:

如果共享集群, Vertica 自然能訪問到這些配置文件, 只需要在 Vertica DB 中驗(yàn)證 HadoopConfDir 環(huán)境變量即可.
如果分離集群, Vertica 必須將所需文件復(fù)制到這些節(jié)點(diǎn), 但一個(gè)更好的做法是, 將 Vertica 節(jié)點(diǎn)配置為 Hadoop 的邊緣節(jié)點(diǎn)(英文為 edge node). 從 Hadoop 的角度來看,Vertica 就是一款客戶端應(yīng)用程序. 可以使用 Hortonworks Ambari 或 Cloudera Manager 配置邊緣節(jié)點(diǎn).

在 Vertica DB 中設(shè)置 HadoopConfDir 參數(shù), 其路徑應(yīng)該包括一個(gè)含有 core-site.xml 和 hdfs-site.xml 文件的目錄.
ALTER DATABASE mydb SET HadoopConfDir = '/hadoop/hcat/conf';

驗(yàn)證配置是否正確:
select VERIFY_HADOOP_CONF_DIR( )

該訪問方式效率較高,但需要注意的是,

ORC 或 Parquet 文件不得使用復(fù)雜數(shù)據(jù)類型.
由 Hive 或 Impala 壓縮的文件需要進(jìn)行 Zlib (GZIP) 或 Snappy 壓縮, 不支持 LZO 壓縮.
定義外部表時(shí),您必須定義文件中的所有列.

使用 hdfs 方案不會(huì)消除對(duì) webHDFS 服務(wù)訪問權(quán)限的需求, hdfs 方案并不適用于所有的文件. 如果 hdfs 不可用,那么 Vertica 會(huì)自動(dòng)改用 webhdfs. 可以直接使用 webhdfs:// 前綴,并指定主機(jī)名、端口和文件路徑, 讀取不受 Kerberos 保護(hù)的文件時(shí),使用 hdfs 方案可能會(huì)提供更好的性能.

[推薦] 使用 Hadoop NameService 的方式訪問 hdfs 上的數(shù)據(jù), 注意是兩個(gè) slash 的寫法, hadoopNS 這個(gè)name service 已經(jīng)在 hdfs-site.xml 定義好了.
CREATE EXTERNAL TABLE tt (a1 INT, a2 VARCHAR(20))
AS COPY FROM 'hdfs://hadoopNS/data/file.csv';

[不推薦] 如果沒有在hdfs-site.xml中定義name service, 需要使用 hdfs:/// 這樣的寫法.
CREATE EXTERNAL TABLE tt (a1 INT, a2 VARCHAR(20))
AS COPY FROM 'hdfs:///opt/data/file.csv';

直接支持 ORC/Parquet 格式,
=> CREATE EXTERNAL TABLE tableName (columns)
AS COPY FROM path ORC;
=> CREATE EXTERNAL TABLE tableName (columns)
AS COPY FROM path PARQUET;
=> CREATE EXTERNAL TABLE t (id int, name varchar(50),
created date, region varchar(50))
AS COPY FROM 'hdfs:///path///*'
PARQUET(hive_partition_cols='created,region');

直接 HDFS 的 bulk load 示例:
COPY t FROM 'hdfs:///opt/data/file1.dat';

如果您在啟動(dòng) Vertica 后更新了任何Hadoop的配置文件,使用下面的語句強(qiáng)制更新 Vertica 中作更新.
SELECT CLEAR_HDFS_CACHES ();

HCatalog Connector 訪問方式

首先Vertica 集群需要安裝 Hadoop and hive的 jar library, 同時(shí)能拿到正確的 Hadoop 和 Hive 的配置文件(hive-site.xml/core-site.xml/yarn-site.xml/webhcat-site.xml/hdfs-site.xml).
Vertica 專門提供了 hcatUtil 工具幫助我們完成這些配置, 該工具的位置是: /opt/vertica/packages/hcat/tools/
詳細(xì)使用見 https://my.vertica.com/docs/8.1.x/HTML/index.htm

另外, 還可以配置是要使用 HiveServer2 還是 WebHCat
ALTER DATABASE mydb SET HCatalogConnectorUseHiveServer2 = 1; -- 使用 HiveServer2, 缺省模式.
ALTER DATABASE mydb SET HCatalogConnectorUseHiveServer2 = 0; -- 使用 WebHCat, 效率比 HiveServer2 好.

集群Linux 完成安裝后, 還需要在 Vertica DB 中安裝必要的Udx庫, Vertica 8.1缺省未安裝.
首先通過下面SQL驗(yàn)證 VHCatalogLib user_lib 是否已經(jīng)安裝?
select * from user_library_manifest where user_library_manifest.lib_name = 'VHCatalogLib';
如果沒有安裝的化, 需要先安裝, vsql -f /opt/vertica/packages/hcat/ddl/install.sql

創(chuàng)建 HCatalog schema 名為 hcat
CREATE HCATALOG SCHEMA hcat WITH
hostname='hcathost'
HCATALOG_SCHEMA='default'
HCATALOG_USER='hcatuser';

可以使用 hcat schema直接訪問 hive 表了.
SELECT
distinct ship_type,
ship_mode,
ship_carrier
FROM hcat.shipping_dimension
WHERE shipping_key >= 10627
GROUP BY ship_mode,
ship_carrier;

HDFS Connector 的外部表訪問示例

首先通過下面SQL驗(yàn)證 HdfsSource user_lib 是否已經(jīng)安裝? Vertica 8.1缺省已經(jīng)安裝.
select * from user_library_manifest where user_library_manifest.lib_name = 'HdfsSource';
如果沒有安裝的化, 需要先安裝, vsql -f /opt/vertica/packages/hdfsconnector/ddl/install.sql

CREATE EXTERNAL TABLE shipping_dimension
(shipping_key integer,
ship_type char(30),
ship_mode char(10),
ship_carrier char(20))
AS COPY FROM SOURCE
Hdfs(url='http://n01:50070/webhdfs/v1/dbadmin/shippingDimension/*');

HDFS Connector 的 bulk load 示例:
COPY testTable SOURCE Hdfs(url='http://hadoop:50070/webhdfs/v1/tmp/test.txt', username='hadoopUser');

ROS Containers on HDFS 方式

共享集群暫時(shí)不做過多研究, 需要?jiǎng)?chuàng)建 HDFS 存儲(chǔ)位置
=> CREATE?LOCATION 'webhdfs://hadoop:50070/user/dbadmin' ALL?NODES SHARED USAGE 'data' LABEL 'coldstorage';
=> SELECT node_name,location_path,location_label FROM STORAGE_LOCATIONS;

-- Vertica Proprietary Format in HDFS
=> SELECT?set_object_storage_policy('DBNAME','HDFS');

導(dǎo)出到HDFS

EXPORT TO PARQUET 可以支持本地導(dǎo)出, 也可以導(dǎo)出到HDFS上.
EXPORT TO PARQUET(directory='hdfs:///data/sales_data')
AS SELECT * FROM public.sales;

EXPORT TO PARQUET(directory='hdfs:///data/sales_by_region')
AS SELECT sale.price, sale.date, store.region
FROM public.sales sale
JOIN public.vendor store ON sale.distribID = store.ID;

EXPORT TO PARQUET(directory = 'hdfs:///data/export')
OVER(PARTITION BY date) AS SELECT date, price FROM public.sales;

EXPORT TO PARQUET(directory = 'hdfs:///data/export')
OVER(PARTITION BY date ORDER BY price) AS SELECT date, price FROM public.sales;

使用第三方庫 ParallelExport 導(dǎo)出到HDFS

EXPORT TO PARQUET 的導(dǎo)出格式必須是 Parquet, 第三方函數(shù) ParallelExport 支持很多中導(dǎo)出格式, 但效率比EXPORT TO PARQUET要差.
參考< http://www.dbjungle.com/exporting-vast-amounts-of-data-using-parallel-export-for-hpe-vertica/>

select ParallelExport(eutime,eid::varchar,logintype::varchar,sessiontime
using parameters cmd='hadoop fs -put - /user/etl/app/app_fact_event_base/${nodeName}', separator=' '
) over( partition auto ) from app.app_fact_event_base where date(sessiontime) in ('2016-12-13','2016-12-14','2017-02-12','2017-02-13') limit 1000;

總結(jié)

以上是生活随笔為你收集整理的Vertica系列:Vertica和Hadoop的互操作性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。