Note for Hadoop

安裝/bin/hadoop namenode -format
查看進程 /usr/bin/jps
拷貝到hdfs   bin/hadoop dfs -put ../../grid/input in
從hdfs拷貝到linux  bin/hadoop dfs -get abc  ./xyz
刪除  bin/hadoop dfs -rmr abc
查看文件內容  bin/hadoop dfs -cat ./in/abc
查看目錄 bin/hadoop dfs -ls ./in/*
         bin/hadoop dfs -ls ./out
查看統計信息 bin/hadoop dfsadmin -report
         
運行樣例:bin/hadoop jar hadoop-0.20.2-examples.jar wordcount in out
http查看namenod:50070端口    http://192.168.0.2:50070/dfshealth.jsp
http查看jobtracker:50030端口  http://192.168.0.2:50030/jobtracker.jsp
http查看日誌    http://192.168.0.2:50030/logs   http://192.168.0.2:50070/logs
http設置日誌級別  http://192.168.0.2:50070/logLevel
HDFS文件操作:
命令方式:
        啓動:start-all.sh
        停止:stop-all.sh
        查看 bin/hadoop dfs -ls
        存入 bin/hadoop dfs -put 源文件 目標文件
        存入 bin/hadoop dfs -copyFromLocal 源文件 目標文件
        取出 bin/hadoop dfs -get 源文件 目標文件
        刪除 bin/hadoop dfs -rmr 源文件夾
        刪除 bin/hadoop dfs -rm  源文件
        查看 bin/hadoop dfs -cat 源文件
        查看 bin/hadoop dfs -text 源文件
        查看 bin/hadoop dfs -tail 源文件
        創建目錄 bin/hadoop dfs -mkdir /user/xxx
        創建文件 bin/hadoop dfs -touchz /user/xxx
        重命名 bin/hadoop dfs -mv /user/xxx user/xxx
        合併文件 bin/hadoop dfs -getmerge /user/home/xxx
        關閉作業 bin/hadoop job -kill [job-id]
        查看整個系統報告   bin/hadoop dfsadmin -report  #檢查HDFS塊狀態,包括DN信息
        查看是否安全模式:bin/hadoop dfsadmin -safemode get
        打開安全模式:bin/hadoop dfsadmin -safemode enter
        關閉安全模式:bin/hadoop dfsadmin -safemode leave
        啓動節點上的datanode: hadoop-daemon.sh start datanode
        啓動節點上的tasktracker: hadoop-daemon.sh start tasktracker
        進行數據負載均衡: start-balancer.sh
        啓動namenote(start dfs daemons):bin/start-dfs.sh --config $HADOOP_CONF_DIR
        啓動MapReduce(start mapred daemons):bin/start-mapred.sh --config $HADOOP_CONF_DIR
        啓動負載均衡:bin/star-balancer.sh  #平衡集羣文件
        並行拷貝:hadoop distcp hdfs://a:8020/xxx hdfs://b:8020/// 
        
        列出正在運行的Job :hadoop job -list
        kill job:hadoop job -kill <job_id>
        檢查HDFS塊狀態,是否損壞:hadoop fsck /
        刪除損壞塊:hadoop fsck / -delete
        並行copy:hadoop distcp hdfs://ZeroHostName:8020/xxx hdfs://OtherHostName:8020///
        
        
                             
API方式:http://hadoop.apache.org/docs/r0.23.6/api/index.html
package cn.forey.hadoop.hdsf
static FileSystem get(Configuration conf)
operator(){
//step 1
得到Configuration對象
//step 2
得到FileSystem對象
//step 3
進行文件操作
}
  hadoop jar /home/ZeroUserName/temp/hdfsmkdir.jar cn.forey.hadoop.hdfs.HdfsMkdir
hadoop-0.20.2-examples.jar是hadoop-0.20.2自帶的一些案例:
1.aggregatewordcount 計算輸入文件中文字個數的基於聚合的MapReduce程序;
2.aggregatewordlist  生成輸入文件中文字個數的統計圖的基於聚合的MapReduce程序;
3.grep 計算輸入文件中匹配正則表達式的文字個數的MapReduce程序;
4.join 合併排序的平均分割的數據庫的作業;
5.pentomino 解決五格拼板問題的分塊分層的MapReduce程序;
6.pi 使用蒙地卡羅法計算pi的MapReduce程序;
7.Randomtextwriter 在一個節點上寫10G隨機文本的MapReduce程序;
8.randomwriter 在每個節點上寫10G隨機數據的MapReduce程序;
9.sleep 在每個Map和Reduce作業中休憩的程序;
10.sort 排序隨機寫入器生成的數據的MapReduce程序;
11.sudoku 一個九宮格遊戲的解決方案;
12.wordcount 在輸入文件中統計文字個的統計器。

寫MapReduce程序的步驟:
 1、把問題轉化爲MapReduce模型
 2、設置運行的參數
 3、寫map類
 4、寫reduce類
 




第三方工具:Ganglia     Chukwa       Openstack
運行jar文件:bin/hadoop jar /home/.../xxx.jar  /home/../input /home/.../output


---------------Hbase------------------
此數據庫適用場景:成熟的分析主題,已確立查詢模式;高速插入,大量讀取;操作簡單 key-value
            優勢:天生面向時間戳查詢;基於行鍵的查詢異常快;分佈式化解負荷。
1、安裝步驟:
      單機模式:1>下載解壓Hbase安裝包 mirror.bjtu.edu.cn/apache/hbase/hbase-0.90.5/
                                      mirror.bit.edu.cn/apache/hbase/ 
                2>修改conf/hbase-env.sh腳本,設置環境變量
                3>編輯hbase-site.xml進行配置  在hbase-env.sh加上export JAVA_HOME=/usr
                                              在hbase-site.xml中加上
                                              <configuration>
                                              <property>
                                              <name>hbase.rootdir</name>
                                              <value>file:///home/hadoop/database</value>
                                              </property>
                                              </configuration>
                4>啓動Hbase  bin/start-hbase.sh
                5>驗證Hmaster已經啓動  /usr/bin/jps
                6>進入shell  bin/hbase shell
                
        僞分佈模式: 1>在單點模式的基礎上繼續
        2>編輯hbase-env.sh增加HBASE_CLASSPATH環境變量 export HBASE_CLASSPATH=/home/hadoop/hadoop-0.20.2/conf
        3>編輯hbase-site.xml打開分佈模式
                                              <configuration>
                                              <property>
                                              <name>hbase.rootdir</name>
                                              <value>file:///home/hadoop/database</value>
                                              </property>
                                              <proerty>
                                              <name>hbase.cluster.distributed</name>
                                              <value>true</value>
                                              </property>
                                              </configuration>
        4>覆蓋hadoop核心jar包  主要目的是防止hbase和hadoop版本不同出現兼容性問題,造成hmaster啓動異常。、
             在hbase的lib目錄中$mv hadoop-core-0.20-append-r1056497.jar hadoop-core-0.20-append-r1056497.sav
                               $ls ../../hadoop-0.20.2/
                               $cp ../../hadoop-0.20.2/hadoop-0.20.2-core.jar .
                               $ls 
        5>啓動hbase bin/start-hbase.sh
        6>驗證啓動  /usr/bin/jps
         
        完全分佈模式  1>配置hosts,確保涉及的主機名均可以被解析爲ip
           2>編輯hbase-env.xml
           3>編輯hbase-site.xml
           4>編輯regionservers文件
           5>把Hbase複製到其他節點
           6>啓動Hbase
           7>驗證啓動  
         
2、Web管理界面  192.168.0.2:60010/master.jsp


3、操作數據庫:1)HQL:$.\hbase shell
                  A、幫助  >help
                  B、查詢數據庫狀態 >status
                  C、查詢數據庫版本 >version
                  D、創建表 >create 'member','member_id','address','info'
                  E、查看錶信息 >list
                                >describe 'member'
                  F、刪除列族  >disable 'member'  //首先需要離線該表
                               >alter 'member',{NAME=>'member_id',METHOD=>'delete'}
                               >enbale 'member'
                  G、刪除表   >disable 'member'
                              >drop 'member'
                  H、查詢一個表是否存在  >exists 'member'
                  I、判斷表是否在線 >is_enabled 'member'
                                 or >is_disabled 'member'
                  J、插入記錄   >put 'member','Jack','info:age','24'
                                >put 'member','Jack','info:birthday','1987-06-17'
                                >put 'member','Jack','info:company','alibaba'
                                >put 'member','Jack','address:country','China'
                                >put 'member','Jack','address:province','Zhejiang'
                                >put 'member','Jack','address:city','hangzhou'   
                  K、查詢,獲取一個行鍵的所有數據        >get 'member','Jack'
                           獲取行鍵、列族(列鍵)所有數據  >get 'member','Jack','info'
                  L、更新一條記錄  >put 'member','Jack','info:age','99'
                                   >get 'member','Jack','info:age'
                  M、全表掃描      >scan 'member'
                  N、刪除指定行鍵的字段  >delete 'member','temp','info:age'
                                         >get 'member','temp'
                  O、刪除整行  >deleteall 'member','temp'   
                  P、查詢表的行數  >count 'member'               
                  Q、清空表  >truncate 'member'
                                                                                
            2)API: http://hbase.apache.org/apidocs/index.html


4、模式設計  
           A、場景:瀏覽商品記錄
               1)行鍵 userid
               2)列族和列 book:bookid
               3)爲了充分利分佈式,可以用reverse key、hash等技巧改造行鍵    
           
           B、場景:推薦商品
              1)兩個表:u-t,t-u
              2)U-t:行鍵 userid,列族和列 thread:threadid
              3)T-u:行鍵 threadid,列族和列 user:userid
              4)查詢,t-u:threadid-->userid             
                      u-t: userid-->threadid,                      
                      在程序中實現去重和統計功能。
                      
           C、場景:學生表(學號,身份證號,姓名,性別,系,年齡)在學號或身份證事情上查詢
                   主表:行鍵學號,列族爲學生,下面的列是身份證號,姓名,性別,系,年齡
                   輔助(索引)表:行鍵爲身份號,列族和列爲學號。
                   
            D、複合行鍵設計:<userid>:<colfam>:<messageid>:<timestamp>:<email-message>
                             <userid>-<messageid>:<colfam>:<qualifief>:<timestamp>:<email-message>
                             好處:便於分佈,便於多條件伸縮查詢。
                             
                             
-------------------pig------------------
1、可以看作hadoop的客戶端軟件,使用類似SQL的面向數據流的pig latin進行數據處理,
   可以進行排序、過濾、求和、分組、關聯等常用操作,可以自定義函數,
   可以看作是pig lation到map-reduce的映射器,
   pig latin面向數據分析處理的輕量級腳本語言。
   
2、安裝pig   1)下載並解壓pig安裝包 http://pig.apache.org/  
                                   http://mirror.bjtu.edu.cn/apache/pig/pig-0.9.2/
             2)設置環境變量  用戶的.bash_profile文件:
                                           PATH=$PATH:$HOME/bin:/home/hadoop/pig-0.9.2/bin
                                           JAVA_HOME=/usr
                                           export JAVA_HOME           
             3)進入grunt shell驗證  pig -x local
             
3、pig工作模式   1)本地模式 所有文件和執行過程都在本地,一般用於測試程序
                 2)Mapreduce模式:實際工作模式 
                                 a、配置pig的map-reduce模式
                                           設置PATH,增加指向hadoop/bin
                                                PATH=$PATH:$HOME/bin:/home/hadoop/pig-0.9.2/bin:/home/hadoop/hadoop-0.20.2/bin
                                                JAVA_HOME=/usr
                                                PIG_CLASSPATH=/home/hadoop/hadoop-0.20.2/conf/
                                                
                                                export PIG_CLASSPATH
                                                export JAVA_HOME
                                                export PATH
                                           設置PIG_CLASSPATH環境變量
                                           修改hosts文件 vi /etc/hosts
                                           啓動pig


4、pig的運行方法    
      a.腳本
      b.Grunt  
          自動補全機制,只能對命令補全
          autocomplete文件
          eclipse插件PigPen
          備註: 一般linux的命令可直接用,如cat ls cd 
                  copyeToLocal example2  ttt
                  運行linux的命令:如 sh /usr/bin/jps
                  Grunt shell命令:cat fs sh cd cp copyFromLocal copyToLocal dump
                                   describe aliases explain help kill ls mv mkdir
                                   pwd quit register rm rmf set illustrate run exec
                                   scriptDone
      c.嵌入式


5.pig數據模型 
    Bag:表
    Tuple:行,記錄
    Field:屬性
    Pig:不要求同一個bag裏面的各個tuple有相同數量或相同灰型的field


6.pig lation常用語句
    LOAD:載入數據的方法
    FOREACH:逐行掃描進行某種處理
    FILTER:過濾行
    DUMP:把結果顯示到屏幕
    STORE:把結果保存到文件
       grunt>records = LOAD 'input/ncdc/micro-tab/sample.txt'
               >>AS (year:chararray,temperature:int,quality:int);
       grunt>DUMP records;
       grunt>DESCRIBE records;
       grunt>filtered_records = FILTER records BY temperature != 9999 AND (quality == 0 OR quality == 1 OR quality == 4 OR quality == 5 OR quality == 9);
       grunt>DUMP filtered_records;
       grunt>grouped_records = GROUP  filtered_records BY year;
       grunt>DUMP grouped_records;
       grunt>max_temp = FOREACH grouped_records GENERATE group,
             >>MAX(filtered_records.temperature);
       grunt>DUMP max_temp;
       
7.LOAD,FOREACH,STORE三部曲  
        pig
        A = LOAD 'csdn.txt' USING PigStorage('#') AS (id,pw,em);
        B = FOREACH A GENERATE em;
        STORE B INTO '/home/ZeroUserName/temp/email.txt' USING PigStorage();
       
      














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