GreenPlum--gpfdist,gpfdists,file和gphdfs

三種用來訪問外部表數據源的協議:gpfdist,gpfdists和gphdfs

gpfdist
在外部表指定文件的所有主機上運行GP文件分發程序(gpfdist)。
該程序指向一個給定的目錄,並行的爲所有segment實例提供外部數據文件服務。
如果文件使用了gzip或者bzip2壓縮,gpfdist會自動解壓。
可以使用多個gpfdist來提升外部表的掃描性能。
可以使用通配符或者C風格的模式匹配多個文件。
注:
1.實際應用中,一般會把gpfdist部署在ETL文件服務器上,在這個服務器上啓動一個或者多個gpfdist。
2.一般制定文件數據的父目錄,因爲大部分是很多數據文件使用同一個gpfdist,如果路徑寫的細的話,就不能使用同一個gpfdist。比如在開啓gpfdist進程時只指定文件根目錄,然後定義外部表時就指定子目錄。
3.gpfdist進程不是越多越好,主要取決於網絡帶寬。

控制節點並行度:
gp_external_max_segs參數設置最大多少segment實例訪問同一個gpfdist文件分發程序。

啓動和停止gpfdist
要啓動gpfdist,必須指定其提供文件服務的目錄以及運行的端口(缺省爲HTTP端口8080)
在後臺啓動gpfdist(日誌信息和出錯信息輸出到日誌文件)

$gpfdist -d /var/load_files -p 8081 -l /home/gpadmin/log &

要在同一個ETL主機啓動多個gpfdist服務,爲每個服務指定不同的目錄和端口。例如:

$gpfdist -d /var/load_files1 -p 8081 -l /home/gpadmin/log1 &
$gpfdist -d /var/load_files2 -p 8082 -l /home/gpadmin/log2 &

停止後臺gpfdist服務:
第一步找到進程號,

$ps -ef|grep gpfdist

第二步殺掉進程,kill -9 XXX
select pg_cancel_backend(1234);

gpfdist 故障診斷:
確保GP segment可以訪問gpfdist的網絡
使用wget命令來測試GP集羣的連接性
$ wget http://gpfdist_hostname:port/filename
例如:

$ wget http://mdw:8081/a.txt

需要確保CREATE EXTERNAL TABLE 定義了hostname,port以及gpfdist的文件名。

gpfdists
gpfdists是gpfdist的安全版本,其開啓的加密通信並確保文件與GP之間的安全認證。
在這裏插入圖片描述
file(適用內部數據)
1、如果使用file://協議,則外部文件必須存放在segment主機上面。
2、指定的符合segment實例數量的URLs將並行工作來訪問外部表
3、每個segment主機外部文件的數量不能超過segment實例數量。
4、pg_max_external_files用來確定每個外部表中允許多少個外部文件。

select * from pg_max_external_files

在這裏插入圖片描述
gphdfs
1、該協議指定一個可以在HDFS上包含通配符的路徑。
2、在GP鏈接到HDFS文件時,所有數據將從HDFS數據節點被並行讀取到GP的segment實例以快速處理。
3、每個GPsegment實例值讀取一組Hadoop數據塊
4、對於寫來說,每個GP segment實例值寫giant實例包含的數據
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章