話不多說我直接上干貨

概念知識
- 安全模式是HDFS所處的一種特殊狀態,在處于這種狀態時,檔案系統只接受讀資料請求,不能對檔案進行寫,洗掉等操作,
- 在NameNode主節點啟動時,HDFS首先進入安全模式,DataNode會向NameNode上傳它們資料塊的串列,讓NameNode得到資料塊的位置資訊,并對每個檔案對應的資料塊副本進行統計,當最小副本條件滿足時,即資料塊都達到最小副本數,HDFS自動離開安全模式,這樣就達到了資源的最大化利用,CPU的整合利用,
- HDFS為每一個用戶都創建了類似作業系統的回收站(Trash),位置在/user/用戶名/.Trash/,當用戶洗掉檔案時,檔案并不是馬上被永久性洗掉,會被保留在回收站一段時間,這個保留的時間是可以設定的,
- Hdfs的快照(snapshot)是在某一時間點對指定檔案系統拷貝,快照采用只讀模式,可以對重要資料進行恢復、防止用戶錯誤性的操作,快照又分為兩種:(1)建立檔案系統的索引,每次更新檔案不會真正的改變檔案,而是新開辟一個空間來保存已經更改的檔案,例如hdfs也是屬于這樣的,而且它的特性如下:新建快照的時候,Datanode中的block不會被復制,快照中只是記錄了檔案塊的串列和大小資訊,其次每個快照最高限額為65536個檔案或者檔案夾,在快照的子檔案夾中不允許在創建新的快照,最后mv命令和del命令是不允許的,因為快照是只讀的,(2)拷貝所有檔案系統,至于如何開啟快照和禁用快照,外援資料顯示,因為一般是禁用的,
- YARN的架構是主從架構,主機為ResourceManager,從機為NodeManager,其中ResourceManager負責接收客戶端的作業請求以及為作業分配相應的NodeManager資源,在NodeManager啟動Container資源容器,在資源容器中運行相關作業,
- YARN架構中的Container容器,YARN管理的資源包括記憶體、CPU、磁盤、IO等等,Container是YARN中資源的抽象,它封裝了某個節點上的多維度資源,
- ResourceManger負責整個系統的資源分配和管理,是一個全域的資源管理器,主要由兩個組件構成,分別是:調度器和應用程式管理器:調度器會根據資源情況為應用程式分配封裝在Container中的資源,應用程式管理器負責管理整個系統中所有應用程式,
- NodeManager是每個節點上的資源和任務管理器,NodeManager負責的作業有如下兩點:定時向ResourceManager匯報本節點上的資源使用情況和各個Container的運行狀態,接收并處理來自ApplicationManager的Container啟動/停止等請求,
- YARN中的應用是如何運行的:應用從客戶端節點提交到YARN應用到資源管理器,然后資源管理查看集群里資源情況,在資源空閑的NodeManager節點啟動ApplicationMaster作為管理該應用,ApplicationMaster分析計算是否有足夠的資源運行任務,如果夠,則自己處理;如果不夠,則向資源管理器申請新的資源,當拿到新資源后,在新的資源所在的NodeManager啟動資源容器,然后執行具體的作業任務,
- YARN調度器分為三種:FIFO Scheduler先進先出調度器,Capacity Scheduler 容器調度器,Fair Scheduler 公平調度器
- MapReduce框架把復雜的、運行于大規模集群上的計算程序高度抽象到兩個函式Map和Reduce函式,我們只需要撰寫好Map和Reduce函式就能完成分布式計算,這樣就是我們的分布式編程極大的簡化了,幫我們隱藏了很多并行編程的細節,MapReduce最終要的策略就是分而治之的思想,比如說我們有個檔案里面存的全是數字,MapReduce就會按照一定的規則把這個檔案劃分成一小塊一小塊的,然后把這些一小塊的資料首先交給Map函式進行處理,然后Map函式的輸出,然后作為Reduce函式的輸入,Reduce處理后,然后進行輸出
- 對于MapReduce,目前較為受歡迎的是Python為編程語言的設計語言,我們可以通過引流的方式對不同的資料進行處理,
- Hbase的定義是一個分布式的,面向列的資料庫,
- Hbase與hdfs的本質區別就是HBASE可以結構化資料,而hdfs只能存盤檔案,對于HBASE存盤資料的時候與我們的基本表有一個不同的就是,它有一個列族,而這個列族管理的列可以提高我們資料索引的效率,
- 一個表會包含很多行資料,每行資料都有行鍵,行鍵必須唯一,用于區分其他行,一個行中可以有很多列,這些列通過列族來分類,列族是多個列的集合, 其實列式資料庫只需要列就可以了, 為什么還需要有列族呢? 因為HBase會盡量把同一個列族的列放到同一個服務器上, 這樣可以提高存取性能, 并且可以批量管理有關聯的一堆列,

hbase操作
- 安全模式,查看當前的狀態:hdfs dfsadmin -safemode get
- 進入安全模式:hdfs dfsadmin -safemode enter
- 強制離開安全模式:hdfs dfsadmin -safemode leave
- 一直等待直到安全模式結束:hdfs dfsadmin -safemode wait
在hdfs里面輸入命令,與Linux里面類似,只是需要在命令列開頭加- - 查看該目錄下的子檔案,遞回查詢:hdfs dfs -ls -R /home
- 移動檔案夾或者檔案:hdfs dfs -mv 源檔案的位置 目標位置(如果是目錄檔案夾需要在后面加入/ 如果是檔案則不需要)
- 遞回洗掉home目錄下的子檔案或者子目錄:hdfs dfs -rm -r /home/檔案
- 洗掉目錄需要把引數改為d即可
- 創建多級檔案夾需要加-P引數,如果父目錄不存在,則創建父目錄
- 新建檔案:hdfs dfs -touchz /whw/whw.txt 然后我們可以利用:hdfs dfs ls -R /whw 查看
- 上傳檔案:首先要在本地上面創建一個檔案,注意這個時候不需要再touch后加z,我們創建好之后,利用:hdfs dfs -put 本地檔案位置 hdfs目標位置,也可以利用:hdfs dfs -copyFromLocal 本地檔案位置 hdfs目標位置
- 移動檔案:hdfs dfs -moveFromLocal 本地檔案位置 hdfs目標位置
- 將hdfs上的檔案下載到本地位置:hdfs dfs -get hdfs的位置 本地目標位置/重命名,也可以用hdfs dfs -copyToLocal hdfs的位置 本地目標位置
- 查看檔案:hdfs dfs -cat 檔案位置
- 追寫檔案:hdfs dfs -appendToFile 本地檔案 hdfs檔案(兩者都是相同的檔案型別)
- Hdfs里面的檔案復制:hdfs dfs -cp 源檔案 復制檔案 引數:-f 如果目標檔案存在則強制覆寫,-p保留檔案的屬性,移動檔案(改名檔案):hdfs dfs -mv 源檔案 目標檔案
- Hdfs中的目錄下的檔案(不包含子目錄)合并后在下載到本地:hdfs dfs -getmerge 本地檔案(位置默認,不需要添加)
HBASE命令集合 - 啟動HBASE,進入HBASE:start-hbase.sh habse shell
- 查詢HBASE里面含有哪些表:list(注意和hive要有所區別,不能在后面加分號),
- 創建表:create ‘表名’,’列族1’,’列族2’,’列族3’
- 添加一個列族:alter ‘表名稱’,‘列族’
- 洗掉列族:alter ‘表名稱’, {NAME => ‘列族名稱’, METHOD => 'delete’}
- 禁止使用或者屏蔽這個表:disable ‘表名稱’
- 洗掉表之前必須要禁止使用這個表,所以必須先要執行上面的操作,然后:drop ‘表名稱’
- 啟用表:enable ‘表名稱’
- 查看這個表的結構:describe ‘表名稱’
- 檢查表是否存在:exists ‘表名稱’
- 添加資料:put ‘表名稱’,’行鍵’,’列族:列名1,列名2……’,‘資料1,資料2……’在這里我們就可以理解為是一個二維表,也就是Excel類似的,一行一列確定一個單元格
- 查詢資料:get ‘表名稱’,‘行鍵’
- 洗掉資料:delete ‘表名稱’,‘行鍵’,‘列名稱’這樣就確定了一個資料集
- 洗掉一行資料:delete ‘表名稱’,‘行鍵’
- 查看表中的記錄數:count ‘表名稱’
- 查看整張表:scan ‘表名稱’(類似于MySQL里面的select)
- 掃描整個列族:scan ‘表名稱’, {COLUMN=>‘列族’}
- 掃描一張表里面某個列的所有資料:scan ‘表名稱’,{COLUMNS=>‘列族名:列名稱’}
- 限制查詢結果行數:scan ‘表名稱’, { STARTROW => ‘rowkey1’, LIMIT=>行數, VERSIONS=>版本數}
- 等值過濾:scan ‘表名稱’, FILTER=>"ValueFilter(=,‘binary:某值’)"過濾改值
HBASE實驗操作 - 首先將本地資料檔案上傳到hdfs:hdfs dfs -put(copyFromLocal) /home/hadoop/ matchinfo.csv /lol
- 在執行次命令前,必須要在hdfs上創建一個lol檔案夾;hdfs dfs -mkdir /lol
- 啟動hbase 進入hbase:start-hbase.sh hbase shell
- 創建表和列族:create ‘lol_match’,’info’
- 匯入資料到hbase中:
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=, -Dimporttsv.columns=“info:League,info:Year,info:Season,info:Type,info:blueTeamTag,info:bResult,info:rResult,info:redTeamTag,info:gamelength,info:blueTop,info:blueTopChamp,info:blueJungle,info:blueJungleChamp,info:blueMiddle,info:blueMiddleChamp,info:blueADC,info:blueADCChamp,info:blueSupport,info:blueSupportChamp,info:redTop,info:redTopChamp,info:redJungle,info:redJungleChamp,info:redMiddle,info:redMiddleChamp,info:redADC,info:redADCChamp,info:redSupport,info:redSupportChamp,HBASE_ROW_KEY” lol_match /lol/matchinfo.csv
每文一語
懂得越多才發現,不多的太多了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/240511.html
標籤:其他
上一篇:資料分析模型 第二章
