<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      HBase二次開發(fā)之搭建HBase調(diào)試環(huán)境,如何遠程debug HBase源代碼

      版本

      HDP:3.0.1.0

      HBase:2.0.0

      一、前言

      之前的文章也提到過,最近工作中需要對HBase進行二次開發(fā)(參照HBase的AES加密方法,為HBase增加SMS4數(shù)據(jù)加密類型)。研究了兩天,終于將開發(fā)流程想清楚并搭建好了debug環(huán)境,所以就迫不及待地想寫篇文章分享給大家。

      二、思路

      首先看到這個需求,肯定是需要先實現(xiàn)HBase配置AES加密《HBase配置AES加密》,或者還可以再繼續(xù)了解實現(xiàn)SMS4加密算法《Java版SMS4加密解密算法》。等到這些都完成之后,就需要想辦法實現(xiàn)HBase的SMS4數(shù)據(jù)加密了。這里我們要養(yǎng)成一種思路,那就是看官網(wǎng)。根據(jù)參考官網(wǎng),只得到如下信息:

      需要實現(xiàn)org.apache.hadoop.hbase.io.crypto.CipherProvider類,所以先要搞清楚這個類在哪個jar包里面。最后,在/usr/hdp/3.0.1.0-187/hbase/lib/目錄下的hbase-common-2.0.0.3.0.1.0-187.jar包里面發(fā)現(xiàn)了這個類。

      接著就想,怎么才能二次開發(fā)這個jar包呢?于是先使用Java Decompiler工具(文末有獲取方式),反編譯該jar包,看了看AES加密模塊的代碼,發(fā)現(xiàn)必須要debug相關(guān)代碼,了解其流程,這樣才會對我之后的二次開發(fā)有幫助。

      現(xiàn)在就遇到了兩個問題:

      • 如何二次開發(fā)這個jar包,哪怕是一行LOG輸出也行
      • 如何遠程debug HBase源代碼

      中間曾嘗試過使用Java Decompiler工具反編譯得到j(luò)ar包的java文件,發(fā)現(xiàn)自己真是too young too simple,反編譯出來的工程編譯失敗,發(fā)現(xiàn)需要依賴父工程。感覺就是要編譯整個HBase源碼。

      可是,我上哪去找對應(yīng)的HDP版本的HBase源碼呢?

      三、獲取hdp各組件源代碼的小竅門

      之所以叫小竅門,是真的找不到對應(yīng) HDP 版本的 HBase 源碼啊,hortonworks 官網(wǎng)上也沒有啊。然后就各種上網(wǎng)查資料唄,終于功夫不負有心人讓我查到了,那就是 hortonworksgithub。下面說一下步驟。

      打開瀏覽器,訪問https://github.com/hortonworks,點擊右上角的搜索框,在當前 organization 內(nèi)搜索你想要的 hdp 組件的源碼即可。

      就拿如何獲取對應(yīng)HDP版本的HBase源碼為例吧:按照上述方法搜索,如下圖所示:

      選擇 hbase-release ,如下圖所示:

      我用的 hdp 3.0.1.0-187 ,所以我找到

      然后使用 git 工具,將源碼下載。hbasetag 有很多,不需要所有的都下載下來,這里我們選擇下載 HDP-3.0.1.0-187-tag 的源碼。命令如下所示:

      git clone -b HDP-3.0.1.0-187-tag --depth 1 https://github.com/hortonworks/hbase-release.git
      

      這樣就將對應(yīng) HDP 版本的 HBase源碼下載下來了,其余組件的下載也是按照此方法。

      四、編譯

      源碼下載完成后,就需要編譯。因為我猜想通過Ambari安裝的HBase源碼目錄(/usr/hdp/3.0.1.0-187/hbase/),就是HBase編譯后的代碼。是或者不是或者有沒有差異,等試過才知道,要大膽地去嘗試。

      使用maven編譯,為了提速,修改maven的鏡像:

      編輯 setting.xml 文件,vim /usr/maven/apache-maven-3.3.9/conf/settings.xml,找到<mirrors>標簽,在里面添加阿里云hortonworks的鏡像,代碼如下所示:

      <mirror>  
          <id>nexus-aliyun</id>   
          <name>Nexus aliyun</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public</url>
          <mirrorOf>central</mirrorOf> 
      </mirror>
      <mirror>
          <id>hw_central</id>
          <name>Hortonworks Mirror of Central</name>
          <url>http://repo.hortonworks.com/content/groups/public/</url>
          <mirrorOf>central</mirrorOf>
      </mirror>
      

      切換到 hbase 源碼的根目錄,執(zhí)行編譯命令:

      mvn package -DskipTests assembly:single
      

      編譯成功后,如下圖所示:

      進入 hbase-assembly/target/ 目錄,會發(fā)現(xiàn)生成了 tar.gz 包,解壓以后,就是 hbase 的可運行源碼了,與使用 Ambari 安裝的 HBase 源碼一致:

      解壓該 tar 包,看看具體內(nèi)容,如下圖所示:

      hbase 的各模塊編譯后會生成 jar 包放入 lib 目錄下,當然里面也有我要的 hbase-common-2.0.0.3.0.1.0-187.jar文件。

      五、遠程debug HBase源代碼

      1. 配置HBase

      如何二次開發(fā) hbase-common-2.0.0.3.0.1.0-187.jar 已經(jīng)解決了。那么如何遠程 debug HBase 源碼呢?首先需要分析 debug HBase 哪個組件的源代碼?之前配置好 HBase AES 加密后,我是在 hbase shell里面對HBase表的列族進行加密設(shè)置的,所以我需要操作 hbase shell 來觸發(fā) HBaseAES 模塊。

      想著如果 HBase Master 掛了的話,HBase shell 也是不可用的狀態(tài),所以就先試試 debug HBase Master

      首先通過 Ambari 停止 HBase Master ,修改 HBase Master 所在主機的 hbase-env.conf 文件,在 export HBASE_MASTER_OPTS 處添加以下配置:

      -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
      

      需要確保 5005 端口沒有被占用,添加后如下圖所示:

      如果要調(diào)試其它組件的話,我猜測也是這種方法。

      為防止 debug 時間過長導(dǎo)致的 hbase master 服務(wù)停止,需要修改 hbase-site.xml 文件:

      <property>
        <name>zookeeper.session.timeout</name>
        <value>900000</value>
      </property>
      

      原值設(shè)置超時為90秒,現(xiàn)在改為15分鐘。

      修改完成之后,我們啟動我們的HBase Master,注意這里不能通過Ambari來啟動HBase Master了,會覆蓋掉修改的配置,在命令行中使用hbase用戶來啟動我們的HBase Master。具體命令如下所示:

      sudo -u hbase /usr/hdp/current/hbase-master/bin/hbase-daemon.sh --config /usr/hdp/current/hbase-master/conf start master
      

      啟動完成之后,建議實時查看日志的輸出:

      tail -f /var/log/hbase/hbase-hbase-master-xxx.log
      

      2. 映射Linux代碼到windows本地

      我是將HBase源代碼下載到Linux上,進行編譯。然后使用Samba工具,將linux上的指定目錄映射到Windows的網(wǎng)絡(luò)驅(qū)動器,然后再通過idea打開。這樣就實現(xiàn)了使用本地的idea打開linux上的代碼了。修改idea上的代碼,其實就是修改的linux上的代碼。具體Samba配置可參考我寫的博客:Samba安裝配置

      3. 配置IDEA

      遠程服務(wù)以 DEBUG 模式成功啟動后,IDEA 連接上對應(yīng)的 DEBUG 端口,就能打斷點調(diào)試了(請確保服務(wù)端代碼和本地代碼一致),Run -> Edit Configurations,具體配置如下圖所示:

      添加一個新配置,選擇 Remote,如下圖所示:

      配置遠程服務(wù)地址和端口:

      在相關(guān)代碼上打上斷點,啟動調(diào)試,如下圖所示:

      出現(xiàn)Connected to字樣,證明debug模式已開啟。執(zhí)行HBase shell,創(chuàng)建一個AES加密類型的表:

      create 'hbase_1102',  {NAME=>'cf1', ENCRYPTION => 'AES'}, {NAME=>'cf2'}
      

      會觸發(fā)斷點,這時候就可以debug代碼了,看看代碼邏輯等。如下圖所示:

      六、總結(jié)

      本篇文章篇幅較長,但都是滿滿的干貨,將這兩天的成果記錄在這,也希望能夠幫助到大家。主要解決了

      • 如何二次開發(fā)這個jar包,哪怕是一行LOG輸出也行
      • 如何遠程debug HBase源代碼

      如果面對未知的東西,主要還是敢于嘗試吧,萬一成功了呢 ~

      環(huán)境什么的都準備好了,接下來,就要對HBase源代碼進行研究了。想想去年debug Ambari Server源碼的時候,感覺和現(xiàn)在差不多的樣子,想想就酸爽,祝我自己成功吧~

      有想要 Java Decompiler 反編譯工具的朋友,可掃描下方二維碼回復(fù) 0425 關(guān)鍵字獲取。


      點關(guān)注,不迷路

      好了各位,以上就是這篇文章的全部內(nèi)容了,能看到這里的人呀,都是 人才

      白嫖不好,創(chuàng)作不易。 各位的支持和認可,就是我創(chuàng)作的最大動力,我們下篇文章見!

      如果本篇博客有任何錯誤,請批評指教,不勝感激 !

      posted @ 2020-01-26 16:16  CREATE_17  閱讀(592)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲偷偷自拍码高清视频| 亚洲毛片多多影院| 免费看亚洲一区二区三区| 国产 另类 在线 欧美日韩 | 亚洲国产精品一区二区第一页| 色国产视频| 亚洲免费视频一区二区三区| 中文字幕乱偷无码av先锋蜜桃| 国产高潮刺激叫喊视频| 正阳县| 在国产线视频A在线视频| 2020国产欧洲精品网站| 好紧好爽午夜视频| 亚洲全网成人资源在线观看| 蜜臀av一区二区三区不卡| 激情五月日韩中文字幕| 亚洲人成网线在线播放VA| 99久久国产精品无码| 日本高清无卡码一区二区| 屏山县| 人妻少妇精品无码专区| 激情五月开心婷婷深爱| 欧美日韩国产亚洲沙发| 亚洲av色综合久久综合| 国产精品无码a∨麻豆| 成人国产欧美大片一区| 精品国产污污免费网站入口| 中文字幕成人精品久久不卡| 东北妇女精品bbwbbw| 国内熟妇人妻色在线三级| 欧美日韩精品一区二区视频| 亚洲成av人片天堂网无码| 一区二区三区四区五区自拍| 91密桃精品国产91久久| 粉嫩小泬无遮挡久久久久久| 97在线碰| 精品国产午夜福利伦理片| 精品综合久久久久久97| 亚洲高潮喷水无码AV电影| 日韩av片无码一区二区不卡 | 把女人弄爽大黄A大片片|