国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

用HAWQ輕松取代傳統數據倉庫(四) —— 啟動停止

2024-07-21 02:51:44
字體:
來源:轉載
供稿:網友
        前面已經完成了HAWQ的安裝部署,也了解了HAWQ的系統架構與主要組件,下面開始使用它。HAWQ作為Hadoop上的一個服務提供給用戶,與其它所有服務一樣,最基本的操作就是啟動、停止、重啟服務。要完成這些操作,需要適當的環境設置。下面就HAWQ管理的一些基礎概念、操作環境、啟動停止及其推薦的操作進行討論。一、基礎概念        如果組織中能夠做到系統管理與開發分離,那這部分內容嚴格說應該是HAWQ系統管理員所關心的。要利用好HAWQ集群,應該有一些linux/UNIX系統管理、數據庫管理系統、DBA和SQL等必備知識和經驗。HAWQ服務器實際上是一個以HDFS作為物理存儲的分布式數據庫系統,像Oracle、MySQL等軟件一樣,是一個真正的數據庫。HAWQ代碼源自PostgreSQL,具有完整的數據庫特性,就連HAWQ的官方文檔也始終與PostgreSQL文檔保持一致。這點與其它SQL-on-Hadoop方案顯著不同。例如Hive,它只是給MaPReduce封裝了一個SQL語義層,SQL語句的執行依賴于底層的MapReduce計算框架,SparkSQL、Impala等等也都是如此。因此個人認為HAWQ更適合DBA轉到Hadoop上。(當然,要是有個將MySQL移植到Hadoop上的產品就更好了。)1. HAWQ用戶        HAWQ支持對用戶和操作權限的管理。HAWQ系統安裝后,數據庫中包含一個預定義的超級用戶,該用戶與安裝HAWQ的操作系統用戶用戶同名,叫做gpadmin。gpadmin作為操作系統用戶,可以使用HAWQ的命令行工具執行管理任務,如啟動或停止HAWQ、擴展集群、刪除集群中的節點等過程。而作為數據庫用戶,gpadmin相當于Oracle的sys或MySQL的root,具有數據庫的最大權限。HAWQ管理員用戶可以創建其它數據庫用戶,并向他們賦予管理或操作數據庫對象的權限。        可以選擇使用Ambari或命令行管理HAWQ集群。當使用Ambari管理HAWQ時,用Ambari的管理員用戶登錄Web控制臺頁面即可,不需要使用gpadmin。Ambari缺省的管理員用戶名/密碼是admin/admin。Managing HAWQ Using Ambari提供了通過Ambari管理HAWQ集群的詳細說明。2. HAWQ系統部署        從前面的安裝過程中看到,一個典型的HAWQ部署包括一個HDFS NameNode、一個HAWQ master、一個HAWQ standby,以及多個HAWQ segment與HDFS DataNode。HAWQ集群中還可能包括HAWQ Extension Framework(PXF)服務或其它Hadoop的服務。        使用Ambari在HDP上安裝HAWQ時,會為HAWQ節點自動選擇HDP集群中的主機,只要求master和standby運行在不同主機上,segment可以和master、standby運行在相同主機上,通常在每個DataNode上運行一個segment。在我的實驗環境中,Ambari選擇hdp3作為master,hdp2作為standby,HDP集群中的所有4臺主機,每個上面運行一個segment。實驗環境與安裝過程參見http://blog.csdn.net/wzy0623/article/details/55212318。二、HAWQ操作環境        在操作HAWQ集群前,必須設置HAWQ所需的環境。1. 設置HAWQ操作環境        HAWQ提供了一個名為greenplum_path.sh的shell腳本文件,位于HAWQ安裝的根目錄下,用于設置HAWQ所需的環境變量。這些環境變量中最重要的是$GPHOME,它指定了HAWQ安裝的根目錄。如果安裝的是Pivotal提供的HAWQ安裝版本,典型的HAWQ根目錄是/usr/local/hawq。其它環境變量包括用于查找HAWQ相關文件的$PATH、動態鏈接庫路徑$LD_LIBRARY_PATH、python路徑$PYTHONPATH、openssl配置文件$OPENSSL_CONF、HDFS3客戶端配置文件$LIBHDFS3_CONF、YARN客戶端配置文件$LIBYARN_CONF、HAWQ的配置文件$HAWQSITE_CONF等。缺省設置可以滿足大多數需求。如果環境有特殊要求,可以將相關環境變量添加到greenplum_path.sh文件中。        執行以下步驟設置HAWQ操作環境:(1)用gpadmin登錄HAWQ節點,或者切換到gpadmin,例如:
[root@hdp1 ~]# su - gpadmin[gpadmin@hdp1 ~]$ (2)通過執行greenplum_path.sh文件設置HAWQ操作環境:
[gpadmin@hdp1 ~]$ source /usr/local/hawq/greenplum_path.sh(3)編輯.bash_profile或其它shell資源文件在登錄時執行greenplum_path.sh。例如:
[gpadmin@hdp1 ~]$ echo "source /usr/local/hawq/greenplum_path.sh" >> ~/.bash_profile(4)在shell初始化文件中設置與具體部署相關的HAWQ特定環境變量,包括PGAPPNAME、PGDATABASE、PGhost、PGPORT和PGUSER等(可選)。例如:. 如果定制了HAWQ主節點的端口號,在shell初始化文件中添加如下一行,設置PGPORT環境變量使該端口號成為缺省值:export PGPORT=10432。設置PGPORT簡化了psql命令行,通過提供缺省端口而不用提供-p(端口)選項。. 如果例行操作一個特定數據庫,在shell資源文件中添加如下一行,設置PGDATABASE環境變量使該數據庫成為缺省值:export PGDATABASE=<database-name>。將<database-name>替換成缺省連接的數據庫名。設置PGDATABASE簡化了psql命令行,通過提供缺省端口而不用提供-d(數據庫)選項。        與HAWQ部署相關的環境變量,參見Environment Variables。2. HAWQ文件與目錄        表1說明HAWQ缺省安裝的一些文件和目錄。

文件/目錄

內容

$HOME/hawqAdminLogs/

缺省的HAWQ管理應用程序日志文件目錄

$GPHOME/greenplum_path.sh

HAWQ環境設置腳本

$GPHOME/bin/

HAWQ管理、客戶端、數據庫和管理應用程序

$GPHOME/etc/

HAWQ配置文件,包括hawq-site.xml

$GPHOME/include/

HDFS、PostgreSQL、libpq的頭文件

$GPHOME/lib/

HAWQ庫文件

$GPHOME/lib/postgresql/

PostgreSQL共享庫和JAR文件

$GPHOME/share/postgresql/

PostgreSQL及其過程化語言的示例與腳本

/data/hawq/[master|segment]/

HAWQ主節點和段的缺省數據目錄位置

/data/hawq/[master|segment]/pg_log/

HAWQ主節點和段的缺省日志文件目錄位置

/etc/pxf/conf/

PXF服務的配置文件

/usr/lib/pxf/

PXF服務插件共享庫

/var/log/pxf/

PXF日志文件目錄

/usr/hdp/current/

HDP運行時和配置文件

表1三、啟動和停止HAWQ        在HAWQ系統中的master節點和所有的segment節點,每個節點運行一個PostgreSQL數據庫服務器實例,例如,在hdp3上可以看到如下兩個postgres進程:
/usr/local/hawq_2_1_1_0/bin/postgres -D /data/hawq/master -i -M master -p 5432 --silent-mode=true/usr/local/hawq_2_1_1_0/bin/postgres -D /data/hawq/segment -i -M segment -p 40000 --silent-mode=true        所有這些DBMS一起被當做單一的DBMS被啟動和停止,通過這種方式能夠統一啟停所有實例。因為HAWQ系統被分布于多個機器上,啟動與停止HAWQ系統的過程又不同于標準的PostgreSQL DBMS的啟動停止過程。        啟動和停止HAWQ的命令分別是hawq start和hawq stop,hawq init命令也會啟動系統。hawq命令行工具是一個python腳本,位于$GPHOME/bin目錄下。可以在命令行輸入hawq -h、hawq start -h或hawq stop -h等獲得相關命令的聯機幫助。啟動停止HAWQ集群的命令都以gpadmin操作系統用戶執行。        注意,不要使用操作系統的kill命令終止任何postgres進程。和其它所有數據庫管理系統一樣,強殺極有可能引起數據不一致的問題。每個客戶端連接到HAWQ時,會在master節點上產生一個postgres進程,這與Oracle的專用服務器類似。終止用戶會話postgres進程的正確方法是使用pg_cancel_backend()數據庫命令。下面是一個例子:
select datname,procpid,current_query from pg_stat_activity; 

        其中datname是會話連接的數據庫名,procpid是會話對應的操作系統進程號,current_query是會話當前執行的SQL語句,查詢結果如圖1所示。

圖1
select pg_cancel_backend(354310);

        取消354310進程。不能取消自己本身的會話,錯誤信息如圖2所示。

圖21. 啟動HAWQ        初始安裝或執行hawq init cluster命令后,HAWQ集群會自動啟動。hawq init cluster命令將初始化HAWQ的master實例和每一個segment實例,并將系統配置為一個整體。該命令要求HAWQ在HDFS上的數據目錄為空,也就是說要清除掉所有用戶數據,因此一般不要手工執行。        更多hawq init的信息參見http://hdb.docs.pivotal.io/211/hawq/reference/cli/admin_utilities/hawqinit.html。        為了啟動已經初始化后的停止了的HAWQ系統,需要在主節點實例上運行hawq start命令。
hawq start cluster        啟動一個已經初始化的HAWQ集群,只能在master節點上執行。該命令將啟動HAWQ系統的master和所有segment,并行執行且協調這個過程。
hawq start master        只啟動HAWQ的master節點,而不啟動segment節點。
hawq start segment        啟動本地segment節點。
hawq start standby        啟動standby節點。
hawq start allsegments        一次啟動所有segment節點。        如果希望忽略無法ssh連接的主機,可以使用hawq start --ignore-bad-hosts選項。            更多hawq start的信息參見http://hdb.docs.pivotal.io/211/hawq/reference/cli/admin_utilities/hawqstart.html。2. 重啟HAWQ        hawq restart命令后跟適當的集群或節點類型,將停止HAWQ,然后在完全終止后重啟HAWQ。如果master或segment已經停止,重啟不受影響。
hawq restart cluster        重啟HAWQ集群,只能在master節點上執行。
hawq restart master        重啟master節點。
hawq restart segment        重啟本地segment節點。
hawq restart standby        重啟standby。
hawq restart allsegments        一次重啟所有segments。        更多hawq restart的信息參見http://hdb.docs.pivotal.io/211/hawq/reference/cli/admin_utilities/hawqrestart.html。3. 只重新導入修改的配置文件        可以在不中斷系統的情況下重載HAWQ的配置文件。hawq stop命令能夠在不中斷服務的情況下,重載pg_hba.conf配置文件(連接認證文件),以及hawq-site.xml和pg_hba.conf文件中的運行時參數。配置在新連接中生效。許多服務器配置參數需要系統完全重啟(hawq restart cluster)才能生效。服務器配置參數的更多信息,參考Server Configuration Parameter Reference。        使用hawq stop命令重載配置文件而不停止系統:
hawq stop cluster --reload        或者:
hawq stop cluster -u4. 以維護模式啟動主節點        可以只啟動master節點執行維護或管理任務,而不影響segment節點上的數據。維護模式是一個超級用戶模式,應該只在實施維護任務時使用。例如,在維護模式下,允許連接到master節點實例上的數據庫并編輯系統目錄設置。(1)在主節點上使用-m選項運行hawq start:
hawq start master -m(2)為維護系統目錄,連接到維護模式下的master節點。例如:
PGOPTIONS='-c gp_session_role=utility' psql template1(3)完成管理任務后,以生產模式重啟主節點。
hawq restart master        注意:錯誤地使用維護模式連接,可能造成HAWQ系統狀態不一致。應該只有專家級用戶執行這個操作。5. 停止HAWQ        hawq stop cluster命令停止HAWQ系統,該命令總是在主節點所在主機上運行。當此命令執行時,會停止所有系統中的postgres進程,包括master和所有segment實例。hawq stop cluster命令使用缺省的最多64個并行線程停止所有構成HAWQ集群的segment。在停止前,系統會等待任何活動的事務結束。為了立即停止HAWQ,可以使用fast停止方式。命令hawq stop master、hawq stop segment、hawq stop standby和hawq stop allsegments分別用于停止master節點、本地segment節點、standby節點和集群中的所有segment。只停止master節點不會終止整個集群。下面是兩個停止HAWQ集群的例子。        停止HAWQ:
hawq stop cluster        以快速模式停止HAWQ:
hawq stop cluster -M fast        -M選項提供了smart、fast、immediate三種停止方式,它們類似于Oracle中shutdown命令的normal、immediate和abort。Smart是缺省值,如果發現數據庫中有活動的連接,停止失敗,并發出一個錯誤消息,如圖3所示。圖3        Fast方式中斷并回滾當前處理的任何事務。        Immediate方式終止正在處理的事務,并立即殺掉所有相關postgres進程。數據庫服務器不會完成事務處理,也不會清除任何臨時數據或使用中的工作文件。(工作文件的概念與MySQL的臨時文件類似。查詢執行過程中,如果不能在內存進行,則會在磁盤創建工作文件。)因此,不推薦使用immediate停止方式。在某些情況下,immediate可能造成數據庫損壞,并需要手工恢復。        更多hawq stop的信息參見http://hdb.docs.pivotal.io/211/hawq/reference/cli/admin_utilities/hawqstop.html。6. 啟動/停止HAWQ集群最佳實踐        為了更好地使用hawq start和hawq stop管理系統,HAWQ推薦使用下面的最佳實踐。執行CHECKPOINT命令,將所有數據文件中更新的數據刷新回磁盤,并在停止集群前更新日志文件。與其它數據庫中檢查點的概念相同,一個檢查點確保在系統崩潰時,文件可以從檢查點快照中被還原。在master節點所在主機上執行以下命令停止整個HAWQ系統:hawq stop cluster。停止segment,并殺死任何運行的查詢,而不造成數據丟失或不一致的問題,在master上使用fast停止模式:hawq stop cluster -M fast。使用hawq stop master只停止master節點。如果因為存在運行著的事務而不能停止master節點,嘗試使用fast方式。如果fast無法工作,再使用immediate方式。使用immediate會引發警告,因為在系統重新啟動時,會導致執行崩潰恢復:hawq stop master -M fast或hawq stop master -M immediate。如果已經修改并希望重載服務器參數設置,并且HAWQ數據庫上的有活動連接,使用命令:hawq stop master -u -M fast當停止本地segment或所有segment時,使用smart模式,這也是缺省值。在segment上使用fast或immediate模式是無效的,因為segment是無狀態的:hawq stop segment或hawq stop allsegments。典型地,應該總是使用hawq start cluster或hawq restart cluster啟動集群。如果使用hawq start standby|master|segment的方式分別啟動節點,確保總是在啟動master節點之前啟動standby節點,否則standby可能與master數據不同步。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洞口县| 二连浩特市| 彰化县| 阿拉尔市| 宁晋县| 黎川县| 甘南县| 石家庄市| 焉耆| 昂仁县| 格尔木市| 承德市| 承德县| 明溪县| 阿拉善左旗| 大荔县| 安溪县| 洪泽县| 九江市| 新竹县| 阳东县| 蒲江县| 中方县| 淮阳县| 潮安县| 凤凰县| 榆社县| 东源县| 浮梁县| 大渡口区| 山东| 呈贡县| 铁岭市| 新巴尔虎左旗| 定结县| 衡南县| 沁源县| 芦山县| 分宜县| 安龙县| 广河县|