本發明涉及大數據技術領域,具體的說是一種基于ambari數據庫強制刪除服務的方法。
背景技術:
近年來,ambari是大數據技術中應用比較廣泛的集群管理工具,它為企業與用戶提供了圖形化界面、自動化部署等封裝完善的各類功能。
目前,社區版ambari產品較為成熟與廣泛使用的版本為2.2與2.4版本。由于2.4版本有了大幅度的功能提升因為直接越過2.3版本成為新的2.4版本。對于這兩個成熟的版本來說,每個版本數據庫schema中初始化的數據庫表都有100+個,同時,數據庫表建立之初就規定了嚴格的依賴關系,能夠保證數據庫權限所有者無法隨意刪除表記錄。
然而,對于開發者而言,由于在開發過程中,會出現很多不可控因素導致ambari開放接口不可用,或數據庫依賴關系遭到破壞等等,使得開發者在開發實現某些自定義服務的同時,無法方便快捷的做到隨時刪除,導致開發時間長,開發效率低。
技術實現要素:
為了解決上述問題,提供了一種基于ambari數據庫強制刪除服務的方法,可以方便開發者操作數據庫,直接強制刪除必須刪除的某些服務,大大縮短了開發時間,提升了開發效率。
本發明的一種具體實施例采用以下技術方案:
一種基于ambari數據庫強制刪除服務的方法,所述的方法包括以下步驟:
判斷刪除是否有效,若有效,直接刪除,若無效,進入下一步;
確定數據庫類型;
執行強制刪除腳本;
重啟ambari-server。
進一步的,重啟ambari-server之后,登錄web頁面確認不可刪除服務已經刪除。
進一步的,判斷刪除是否有效的標準為:分別執行api停止服務和api刪除服務,如果兩種服務中,任何一個服務執行失敗,則刪除無效,反之,則刪除有效。
進一步的,確定數據庫類型的具體方式為:查看ambari-server所在節點中ambari.properties文件的內容,獲取數據庫類型信息。
進一步的,執行強制刪除腳本的具體實現過程為:
根據獲取的數據庫信息登錄該數據庫,
強制刪除表servicedesiredstate中需要刪除的服務;
強制刪除表servicecomponentdesiredstate中需要刪除的服務;
強制刪除表clusterservices中需要刪除的服務;
強制刪除表hostcomponentstate中需要刪除的服務;
強制刪除表hostcomponentdesiredstate中需要刪除的服務。
進一步的,在強制刪除服務之前開啟表clusterservices觸發器修改權限以及表servicecomponentdesiredstate觸發器修改權限,并且在強制刪除服務之后啟用修改后的表clusterservices和修改后的表servicecomponentdesiredstate。
本發明一種具體實施例的有益效果是:
1、可以方便開發者操作數據庫,直接強制刪除必須刪除的某些服務,大大縮短了開發時間,提升了開發效率。此外,hive可以將sql語句轉換為mapreduce任務進行運行,作為sql到mapreduce的映射器,但是不支持更新、索引和事務,對于使用相同字段常量設計某些特定業務的sql查詢的開發者來說,通過強制刪除服務,不僅可以解決hive高低版本sql的兼容性問題,更可以實際的解決groupby功能問題。
2、通過登錄web頁面確認不可刪除服務已經刪除,確保整個刪除操作已經完成且所刪除的服務正確無誤,保證后續操作的準確性。
3、設定標準預先判斷刪除是否有效,避免無效勞動,保證操作的準確性,提高工作效率。
4、通過目錄文件直接查找數據庫類型,方便快捷,大大提高了工作效率。
5、通過設置腳本命令強制刪除各種表中的服務,滿足mysql數據庫的刪除操作,確保所需刪除的服務完全刪除干凈。
6、針對表clusterservices和表servicecomponentdesiredstate,設置權限開啟和修改啟用環節,滿足postgres數據庫的刪除操作。
附圖說明
圖1是本發明一種實施例的方法流程圖;
圖2是本發明另一種實施例的方法流程圖。
具體實施方式
為了使本領域的技術人員能夠更好地理解、實現本發明,下面通過具體實施例對本發明進行詳細說明。
本文中一些名詞的解釋:
hive是指數據倉庫系統,主要功能是支持大數據集或大表的數據存儲、即席查詢和分析。
mapreduce是hadoop新一代計算框架。
groupby:從英文的字面意義上理解就是“根據(by)一定的規則進行分組(group)”。它的作用是通過一定的規則將一個數據集劃分成若干個小的區域,然后針對若干個小區域進行數據處理。
實施例1
如圖1所示為一種具體實施例,提供了一種基于ambari數據庫強制刪除服務的方法,該方法包括以下步驟:
1、判斷刪除是否有效,也就是明確ambari已開發api接口已無效,判斷標準為:分別執行api停止服務和api刪除服務,如果兩種服務中,任何一個服務執行失敗,則刪除無效,只有當兩種服務都執行成功時,刪除有效。如果判斷結果為有效,直接刪除,如果判斷結果為無效,進入下一步。
2、確定數據庫類型,具體方法為查看ambari-server所在節點中ambari.properties文件的內容,獲取數據庫類型信息。在實際操作中,給出一個路徑的實際例子為:etc/ambari-server/conf/ambari.properties。
3、執行強制刪除腳本,具體實現過程為:
登錄mysql,其中默認的數據庫賬戶密碼是ambari/bigdata(修改除外),登錄之后,參考執行腳本程序如下:
強制刪除表servicedesiredstate中需要刪除的服務;強制刪除表servicecomponentdesiredstate中需要刪除的服務;強制刪除表clusterservices中需要刪除的服務;強制刪除表hostcomponentstate中需要刪除的服務;強制刪除表hostcomponentdesiredstate中需要刪除的服務。
在上述執行過程中,對于不同表格的強制刪除沒有先后順序之分,技術人員可以根據自身需求設定順序執行,也可以同時執行。
4)重新啟動ambari-server使生效。
5)重啟ambari-server之后,登錄web頁面確認不可刪除服務已經刪除。如果不可刪除服務仍然沒有刪除,需要重新執行一次操作。
實施例2
如圖2所示為一種具體實施例,提供了一種基于ambari數據庫強制刪除服務的方法,該方法包括以下步驟:
1、判斷刪除是否有效,也就是明確ambari已開發api接口已無效,判斷標準為:分別執行api停止服務和api刪除服務,如果兩種服務中,任何一個服務執行失敗,則刪除無效,只有當兩種服務都執行成功時,刪除有效。如果判斷結果為有效,直接刪除,如果判斷結果為無效,進入下一步。
2、確定數據庫類型,具體方法為查看ambari-server所在節點中ambari.properties文件的內容,獲取數據庫類型信息。在實際操作中,給出一個路徑的實際例子為:etc/ambari-server/conf/ambari.properties。
3、執行強制刪除腳本,具體實現過程為:
對于postgres數據庫,登錄ambari庫,其中默認的數據庫賬戶密碼是ambari/bigdata(修改除外),登錄之后,參考執行腳本程序:
首先,對于表clusterservices和表servicecomponentdesiredstate,需要開啟這兩個表的觸發器修改權限;然后,開始強制刪除操作,強制刪除表servicedesiredstate中需要刪除的服務;強制刪除表servicecomponentdesiredstate中需要刪除的服務;強制刪除表clusterservices中需要刪除的服務;強制刪除表hostcomponentstate中需要刪除的服務;強制刪除表hostcomponentdesiredstate中需要刪除的服務;最后,對于表clusterservices和表servicecomponentdesiredstate,啟用修改后的表clusterservices和修改后的表servicecomponentdesiredstate。
在上述執行過程中,對于不同表格的強制刪除操作沒有先后順序之分,技術人員可以根據自身需求設定順序執行,也可以同時執行。
4)重新啟動ambari-server使生效。
5)重啟ambari-server之后,登錄web頁面確認不可刪除服務已經刪除。如果不可刪除服務仍然沒有刪除,需要重新執行一次操作。
盡管說明書及附圖和實施例對本發明創造已進行了詳細的說明,但是,本領域技術人員應當理解,仍然可以對本發明創造進行修改或者等同替換;而一切不脫離本發明創造的精神和范圍的技術方案及其改進,其均涵蓋在本發明創造專利的保護范圍當中。