大數據第三天 1.HBase————分佈型數據庫(NoSQL) 1.表 存儲管理數據 2.行鍵 相似關係型數據庫中的主鍵 HBase自帶 通常爲查詢比較多的列 3.列族 列的集合 在定義表時指定的 4.時間戳 列的一個屬性 若是不指定時間戳,默認取最新的數據 5.優勢 1.海量數據秒級簡單查詢 2.並行查詢 6.特殊表 -ROOT- 記錄.META表的Region信息,只有一個region .META 記錄用戶表的Region信息,能夠有多個region 7.查詢請求過程 zookeeper->-ROOT- ->.META -> 最終位置 8.安裝 1.解壓安裝包 2.添加HBase環境變量 /etc/profile 3.修改配置文件 hbase-env.sh hbase-site.xml 4.啓動 啓動前需保證已經啓動hadoop 5.驗證 jps查看進程 分別是HMaster/HRegionServer/HQuorumPeer web: hadoop:60010 9.shell使用 1.建立表 create 2.添加記錄 put 3.查看記錄 get 4.刪除記錄 delete 5.更改記錄 重寫覆蓋 6.查詢記錄總數 count 7.刪除表 先disable 再drop 8.查看錶結構 desc 10.javaAPI 1.導入jar包 2.獲得Configuration對象 3.建立表/刪除表使用HBaseAdmin對象 4.插入記錄、查詢記錄使用HTable對象 11. HDFS數據導入HBase 2.Hive————SQL to MR 1.簡介 hive是一個sql解析引擎,能夠把sql查詢轉換成mr中的job來運行 2.安裝 1.解壓安裝包 2.配置hive環境變量 /etc/profile 3.修改配置文件 hive-site.xml/hive-env.sh/hive-config.sh 4.修改hadoop配置文件 hadoop-env.sh 5.拷貝mysql jdbc鏈接jar到lib目錄下 3.安裝mysql(用於存儲元信息) 4.配置hive鏈接mysql(經過jdbc方式) 5. 內部表 CREATE TABLE t1(id int); LOAD DATA LOCAL INPATH '/root/id' INTO TABLE t1; CREATE TABLE t2(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; 6. 分區表 CREATE TABLE t3(id int) PARTITIONED BY (day int); LOAD DATA LOCAL INPATH '/root/id' INTO TABLE t1 PARTITION (day=22); 7. 桶表 create table t4(id int) clustered by(id) into 4 buckets; set hive.enforce.bucketing = true; insert into table t4 select id from t3; 8. 外部表 create external table t5(id int) location '/external'; 9.UDF————用於自定義函數 1.繼承org.apache.hadoop.hive.ql.UDF 2.實現evaluate函數,evaluate函數支持重載 3.注:UDF只能實現一進一出的操做,若是須要實現多進一出,則須要實現UDAF 3.Pig————PLain to MR 1.安裝 1.解壓安裝包 2.配置pig環境變量 /etc/profile 3.修改配置文件——pig.properties 4.便可使用,具體使用詳情可度娘(重點不在這,在Hive) 4.Zookeeper————集羣資源管理和保證節點數據的事務性、完整性 4.1 leader 負責進行投票的發起和決議,更新系統狀態 4.2 learner 包括follower和observer 其中: follower用於接受客戶端請求並向客戶端返回結果,在選主過程當中參與投票 observer用於接受客戶端鏈接,將寫請求轉發給leader,但其不參加投票過程,只同步leader的狀態 4.3 client 請求發起方 5.Mahout————基於MR開發的數據挖掘和機器學習庫 5.1 聚類算法 將相似的對象劃分紅多個類的算法 以k-means算法爲例 思想: a.給定聚類個數K b.按照數據特徵,將其分爲k個類別 步驟: 1.提取feadture 2.將feadture向量化 3.利用K-means算法實現聚類 5.2 分類算法 有監督機器學習算法,需提供樣本,根據樣本獲得分類模型 步驟: 1.訓練樣本,獲得分類模型 2.對分類模型進行測試,並嘗試調優 3.將分類模型用於線上產品中 5.3 推薦算法 6.Flume————分佈式日誌收集框架 1.agent是一個java進程,運行在日誌收集節點 a.source組件是專用於收集日誌文件,收集數據後臨時存放在channel中 b.channel組件是用於臨時存儲數據 c.sink組件是用於把數據發送到目的地的 d.event組件是數據傳輸中的數據流 2.安裝 1.解壓包 2.配置環境變量 /etc/profile 3.修改配置文件 配置source1 配置channel1 配置sink1 詳情參考配置文件模板 3.運行flume-ng.sh 7.sqoop————對數據進行導入導出 1.安裝 1.解壓包 2.配置環境變量 /etc/profile 3.修改配置文件 sqoop-env.sh/sqoop-site.xml 4.拷貝mysql jdbc鏈接jar到lib目錄下 2.使用 1.從mysql->hdfs中(默認導出路徑是hdfs根目錄下/user/root(當前登錄用戶)中) sqoop import --connect "jdbc:mysql://hadoop:3306/test?useUnicode=true&characterEncoding=utf-8" --username root --password root --table t_test --fields-terminated-by '\t' --null-string '**' --connect 關係型數據庫鏈接url --username 用戶名 --password 密碼 --table 表名 --fields-terminated-by 導出時字段分隔符 --null-string 導出時字段爲空替換符(若是不設置這項,若字段爲空,會報錯) 2.從hdfs->mysql中(默認導出路徑是hdfs根目錄下/user/root(當前登錄用戶)中) sqoop export --connect "jdbc:mysql://hadoop:3306/test?useUnicode=true&characterEncoding=utf-8" --username root --password root --table t_test --fields-terminated-by '\t' --export-dir 'ids' --export-dir 導入目錄 3.增量導入導出 --check-column 檢查列 --last-value 最後存儲的值 --incremental append 增長方式 4.添加任務————將經常使用的語句添加到任務 sqoop job --create myjob -- export --connect "jdbc:mysql://hadoop:3306/test?useUnicode=true&characterEncoding=utf-8" --username hive --password hive --table stock_detail --fields-terminated-by '\t' --export-dir 'stock_detail' 5.運行任務 sqoop job --exec 任務名(注意配置免密碼,否則須要輸入mysql的密碼,注意是mysql數據庫用戶密碼而不是linux的) 6.查看任務 sqoop job --list 6.刪除任務 sqoop job --delete 7.設置免密碼 配置文件site.xml sqoop.metastore.client.record.password 打開這項,默認是註釋的 8.事務處理 以Mapper任務爲單位