2016/4/29

jboss 修改jsp ,不須重啟servers伺服器


  • 使用IDE寫程式 , 常常為了改一段程式碼就需要重啟伺服器部署一次感到厭煩嗎?
  • 本地端使用jboss developer 開發
  • 找到jboss的standalone.xml檔
    C:\ ~~~~~~~~ \jbdevstudio\runtimes\jboss-eap\standalone\configuration
  • 加入以下三行 , 重啟servers伺服器 , 以後每次修改jsp 都不用重啟了~~~ 

            <configuration>
                <jsp-configuration development="true"/>
            </configuration>


2016/4/28

[maven 3]自建 maven archetype


  • 最近在使用maven作為我的版控工具 , 發現一個需求就是 , 我希望能讓專案的底層架構可以重複使用, 於是我上網查詢得到 maven 有一個名詞叫做  archetype , 在建置archetype前可以先參考  安裝maven    與 建立maven web專案  , 我將在本篇中將maven專案產生一個archetype , 以利這個專案的內容可以不斷重複利用 , 以及可以base on 此專案加上更多的framework
  • 此為我要製作archetype的maven專案與其架構

  •  因為我想用MyApp1製作一個archetype , 我先在他的pom.xml加入以下程式碼

  • 然後 cmd 切換至專案根目錄位置 , 有pom.xml那層輸入
    • mvn clean
    • mvn install 


  • 建立自己的archetype 
    • mvn archetype:create-from-project


  • 執行結束後 , 會在專案底下的target資料夾 generated-sources/archetype 會有兩個檔案 , src目錄與 pom.xml , cmd 切換至 generated-sources/archetype 再下一次指令 , 會將 archetype 紀載在本地庫Repository
    • mvn install


  • 此時你的模板已經建立完成 , 在當前windows使用者的目錄/ .m2 /下會新增一個檔案 archetype-catalog.xml , 裡面記載了本地庫repository有甚麼archetype可用 , 此檔案在我們建立maven專案時會呼叫 , 就會幫我們打好底 , MyApp1專案的內容得重複使用



  • 以上動作完成後 , 我們至eclipse建立一個maven專案



  • 新增一個archtype來源 




  • 尋找剛剛的archetype-catalog.xml , description定義一個自己看得懂的名稱 並選擇之






  • 之後大至跟一般建立maven專案的操作沒啥兩樣



  • 這樣就算是完成了專案複製再次利用






  • 只要將generated-sources/ 底下的 archetype 備份起來 , 你就可以將你的 archetype 帶著走,只需要在重做一次 mvn install 就可以使用 , 但這部分沒試過
  • eclipse堤共UI介面建立 maven專案 , 也可以看看用mvn指令建立 參考
  • 執行專案時 , 專案名稱可能會找到舊名稱(MyApp1) , 可至SSHBaseApp\.settings\org.eclipse.wst.common.component
    修改為新名稱SSHBaseApp , 並且refresh 專案



java -version 異常解決


  • 參考網址
  • 最近要安裝maven , 之前本機裝過jdk 1.7 與 jdk 1.8 , 今天嘗試在cmd 輸入 java -version時 , 發現竟然出現 
    • Error : Registry key 'Software\JavaSoft\Java Runtime Enviroment \ CurrentVersion'
      has value '1.8' but '1.7' is required

  • 不知道是否因為安裝1.7又安裝1.8版, 造成問題 , 還好我依照參考網址所提共的方法已解決掉
    • 在執行輸入視窗輸入regedit
    • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
    • 找到一下位置 , 會發現 java runtime environment 的java 版本不同


  • 在current version上右鍵修改成1.7 , 再次輸入java -version 就正常了!!!!





[maven 1] 安裝maven ,並用jboss(eclipse)掛載外部maven


  • 安裝maven前需要先安裝java環境,並設置java環境變數
    • java -version 確認是否設置成功
  • 下載maven Binary zip archive , 解壓縮後放置根目錄 , 並且也可以建一個maven用的repository的本地庫






  • 再來更改setting.xml檔 , 開啟本地庫位置 , maven jar檔將存至此




  • 以上就已經算是安裝完成 , 我們還可以去eclipse->windows->preference ->maven 告訴IDE有外掛maven 


2016/4/27

[maven 2]JBoss Developer Studio ( eclipse 也適用) 上建立 maven web專案


  • 官網下載 eap版本 
  • 可以依照網頁底下的 Get Started 的指示安裝JBoss
  • 下載下來是個JAR檔 , 右鍵用啟動它即可
  • 本次環境使用的是 jboss eap 9 版  , 需搭配 jdk 8


  • 安裝完畢後 , jboss 已內建了 maven套件 , 我們在左方點擊滑鼠右鍵 , 選擇 maven project 



  • 直接下一步


  • 搜尋網路上的web專案 maven-archetype-webapp



  • group id 當作是輸入套件名稱 (公司相關資訊)
  • Artifact id 當作是專案名稱


  • maven幫我們建置了web 專案 , 注意是有含 web.xml
  • 接著會有一個錯誤訊息是專案看不懂jsp檔 , 我們須手動建立servlet-api到pom.xml

  • 關於dependencies的內容 , 皆可以透過網路查詢得到 


  • 因servlet我選擇用3.0版 , 我們必須先把專案的WebContent/WEB-INF/web.xml砍掉, 再至專案的 project facets , 找到Dynamic Web Module , 預設應該會是2.5 , 將勾勾打掉 , 改成3.0 , apply一次 , 再勾起勾勾 並且下方框框會出現一個連結 , 點擊後勾選產生web.xml , 確定後再點擊一次 apply , 按下確定 , ide會要求update maven 
  • 這裡的update maven project我覺得是maven依照你的設定以及預設重新匯入編譯環境與jar檔 , 因為我依照原本的做法從java build path 變更jdk版本後 , update maven project後設定會還原成1.5版 , 因為我選擇使用3.0 module , 需要jdk 1.7以上的支援 , 再因jboss 環境支援jdk 1.8 , 我必須告訴maven我的編譯環境使用的是jdk 1,8 , 因此我必須在pom.xml再設定一段 , 然後再至此頁面設定java為1.8







  • 最後案子就完成了 , 後續我要開始慢慢加入spring 





  • 如果觀看jsp檔時 下方因64位元造成無法顯示 , 可以照著畫面右下方jboss FAQ安裝元件即可





2016/4/26

Hbase儲存結構筆記


  • Hbase架構在HDFS環境上 , 類似google的 bigtable與GFS
  • Hbase table和region(預設64KB)的關係 , 類似HDFS file與block(預設64MB)的關係
  • Hbase是按照Column Family儲存



  • table & region 
    • 隨著資料的增加 , hbase會依照 rowkey 範圍切成不同 region  , 每個region 用 [startkey,endkey﹞] 表示 , 最後Hmaster 分配到各 regonserver管理 。





  •  -ROOT- && .META. Table
    • zookeeper意思就是這個動物園裡的管理者, 譬如pig、hadoop、hive...等 , 負責各節點之間的協調角色 , zookeeper記錄了 -Root的位置   , HRegionServer也會註冊至zookeeper上, 使得HMaster可以得知HRegionServer是否還活著 , 並且ZooKeeper Fail Controller (ZKFC)  可以處理單點失敗問題
    • Root只有一個region組成 ,記錄了.meta表的region訊息
    • .meta可以有多個region組成,記錄了表的region訊息


  • HMaster

    • 可以啟動多個HMaster  , 透過Zookeeper Election機制管理 , 保證有一個HMaster運行
  • 名稱解釋
    • 每個HRegionServer管理數個HRegion 
    • 每個HRegion對應了一個Region
    • 每個HRegion由多個HStore組成
    • 每個HStore包含多個Storefile , 一HStore對應一個Column Family 
      • 因資料放在同一個Column Family裡 , 因此在查詢速度上 , HBase比HDFS快
    • 每個storefile(hfile)包含多個block(最小單位) ,一個storefile對應一個Column Qualifier
    • HStore是HBase中儲存核心 , 由MemStore與StoreFiles組成



  • MemStore是memory buffer , 將使用者操作放置buffer裡,當flush時存成一個storefile(HFile) , 當storefile達到一定數量會啟動compact機制,合併成storefiles同時更新版本與刪除,不斷合併超過一數值後 , 將其split , split後的region們會被HMaster分配到HRegionServer上
  • compact分為兩種情況
    • Minor Compaction (部分文件合併)
    • Major Compaction (完整文件合併)
      • 刪除過期&已刪除的data
      • 合併結束只會有一個storefile 
  • 在處理過程中如果其中一台RegionServer掛掉了, HMaster会通过Zookeeper感知到,HMaster首先會處理遺留的 HLog文件,將失效的region重新分配


Hbase常用操作shell


  • 啟動hbase
  • 進入hbase模式   
    • hbase shell
  • 如果需要詳細查詢shell指令用法
    • help 'put'  
    • help 'get'
    • 以此類推.....
  • 顯示所有表格
    • list
  • 掃描表格
    • scan '表名稱'
  • 查詢狀態
    • status
  • 查詢版本
    • version

  • 建表  
    • create  '表名稱','列族名1','列族名2'........
    • create 表名稱', {NAME => '族名1', VERSIONS => 1}, {NAME => '列族名2', VERSIONS => 1}, {NAME => '列族名3', VERSIONS => 1}
  • 變更表格
    • 新增列族
      alter '表名稱','列族名'
    • 刪除列族
      alter '表名稱','delete'=>'列族名'
  • 離線
    • disable '表名稱'
    • is_disabled '表名稱'
  • 連線
    • enable '表名稱'
    • is_enabled  '表名稱'
  • 刪除表
    • 需先表離線
    • drop '表名稱'


  • 新增資料
    • put '表名稱','行名稱','列族名稱:',''
    • put '表名稱','行名稱','列族名稱:列名稱',''
    • 當表名稱到列名稱都相同做put動作時 , 該筆資料會被覆蓋, 以及timestamp更新
    • 預設保留3個timestamp版本
  • 取得資料
    • get '表名稱','行名稱'
    • get '表名稱','行名稱','列族名稱'
  • 查看記錄筆數
    • count '表名稱'
  • 刪除紀錄
    • delete '表名稱','行名稱','列族名:',timestamp
    • deleteall '表名稱','rowkey'

  • 把memmory寫到hfile
    • flush '表名稱'

2016/4/25

簡易安裝/啟動samba


  • 假設是一台全新的linux環境
  • 先關閉linux安全機制 SELinux
    • nano /etc/selinux/config
    • 將selinux=disabled
    • setenforce 0
  • 安裝samba
    • yum install samba
  • 設定samba 
    • nano /etc/samba/smb.conf
    • 將security=share  可不用帳密驗證
    • 將public註解拿掉




  • 啟動samba
    • chkconfig smb on
    • service smb start
  • 在本機新增一個網路位置 , 輸入linux的ip以及public資料夾即可





初學者建立hadoop 分享 (下)



  • 環境安置完畢後, 啟動Ambari

    • 每次安裝前需先將THP關閉, 請參考上篇
    • 啟動ambari
      ambari-server start

    • 打開firefox在url輸入 http://master:8080進入ambari web管理介面



    • 輸入預設管理者帳號 admin  密碼 admin 即可登入

                 


  • 安裝hadoop
    • 安裝

                     


    • 輸入名稱 myhadoop       

                          

    • 選擇hadoop 2.3 版       
                   
    • 因為此範例cluster只有一台主機 , 因此輸入master , 並且給予ssh 私鑰 , 透過指令產生私鑰,並將畫面上的結果貼上 (記得使用root權限)
                     cat ~/.ssh/id_rsa
                     
                      



    • 選擇服務 , 順利的話一路下一步至選擇服務, 這裡我選的是HDFS、MapReduce、Yarn、Tez、Hive、Pig、Oozie、Zookeeper、Ambari Metrics、HBase、Sqoop

                      


    • 一路下一步, 這裡有兩個錯誤, 需要輸入資料庫密碼, 自訂即可

    • 安裝如果中斷, 不斷re-run即可
    • 安裝完畢後, 如果左方有error 可試著重啟 , 或著照著 官網 解決方法
    • 如需要重啟ambari , 建議先將安全模式關閉 , 才能真正讓設定生效
      • su - hdfs
      • hadoop dfsadmin -safemode leave







    test2