日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

/opt/hbase/conf 中不能启动hbase_浅谈Hbase在用户画像上的应用

發布時間:2024/1/23 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 /opt/hbase/conf 中不能启动hbase_浅谈Hbase在用户画像上的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

公司要做C端的用戶畫像,方便運營人員根據標簽做用戶圈選,然后對這部分人群做精準廣告投放,所以需要線上接口實時調用庫中數據,并快速返回結果,并將結果反饋到推送平臺進行推送。

目前公司的方案是全部走ES。每天將Hive統計的各個維度的用戶標簽結果數據從Hive推送到ES,然后ES進行篩選,推送。這個流程雖然速度快,但是不可避免的遇到一個問題,后續數據量會越來越大,如果跨多個維度的用戶圈選,可能會導致ES處理不過來,所以準備采取第二套方案,在組合標簽查詢對應的用戶人群場景中,首先通過組合標簽的條件在Elasticsearch中查詢對應的索引數據,然后通過索引數據去HBase中批量獲取rowkey對應的數據。

優化后方案流程圖:

介紹

Hbase的簡介

HBase是一個高性能、列存儲、可伸縮、實時讀寫的分布式存儲系統,同樣運行在HDFS之上。與Hive不同的是,HBase能夠在數據庫上實時運行,而不是跑MapReduce任務,適合進行大數據的實時查詢。

Hadoop本質上是:分布式文件系統(HDFS) + 分布式計算框架(Mapreduce) + 調度系統Yarn搭建起來的分布式大數據處理框架。
Hive:是一個基于Hadoop的數據倉庫,適用于一些高延遲性的應用(離線開發),可以將結構化的數據文件映射為一張數據庫表,并提供簡單的sql查詢功能。
Hive可以認為是MapReduce的一個包裝,把好寫的HQL轉換為的MapReduce程序,本身不存儲和計算數據,它完全依賴于HDFS和MapReduce,Hive中的表是純邏輯表。hive需要用到hdfs存儲文件,需要用到MapReduce計算框架。
HBase:是一個Hadoop的數據庫,一個分布式、可擴展、大數據的存儲。hbase是物理表,不是邏輯表,提供一個超大的內存hash表,搜索引擎通過它來存儲索引,方便查詢操作。
HBase可以認為是HDFS的一個包裝。他的本質是數據存儲,是個NoSql數據庫;HBase部署于HDFS之上,并且克服了hdfs在隨機讀寫方面的缺點,提高查詢效率。

HMaster

    • 管理HRegionServer,實現負載均衡。
    • 管理和分配HRegion,比如在HRegion split時分配新的HRegion;在HRegionServer下線時遷移其內的HRegion到其他HRegionServer上。
    • 實現DDL操作
    • 管理namespace和table的元數據
    • 權限控制(ACL)

HRegionServer

    • 管理HRegion
    • 讀寫HDFS,管理Table中的數據。
    • Client直接通過HRegionServer讀寫數據(從HMaster中獲取元數據,找到RowKey所在的HRegion/HRegionServer后)

ZooKeeper

    • 存放整個 HBase集群的元數據以及集群的狀態信息。
    • 實現HMaster主從節點的failover。

Rowkey

用來表示唯一一行記錄的主鍵,HBase的數據是按照row key的字典順序進行全局排列的。訪問HBase中的行只有3種方式

  • 通過單個row key訪問
  • 通過row key的正則訪問
  • 全表掃描

由于HBase通過rowkey對數據進行檢索,而rowkey由于長度限制的因素不能將很多查詢條件拼接在rowkey中,因此HBase無法像關系數據庫那樣根據多種條件對數據進行篩選。一般地,HBase需建立二級索引來滿足根據復雜條件查詢數據的需求。

Rowkey設計時需要遵循三大原則:

  • 唯一性原則:rowkey需要保證唯一性,不存在重復的情況。在畫像中一般使用用戶id作為rowkey。
  • 長度原則:rowkey的長度一般為10-100bytes。
  • 散列原則:rowkey的散列分布有利于數據均衡分布在每個RegionServer,可實現負載均衡。

通常來說,RowKey 只能針對條件中含有其首字段的查詢給予令人滿意的性能支持,在 查詢其他字段時,表現就差強人意了,在極端情況下某些字段的查詢性能可能會退化為全表 掃描的水平,這是因為字段在 RowKey 中的地位是不等價的,它們在 RowKey 中的排位決 定了它們被檢索時的性能表現,排序越靠前的字段在查詢中越具有優勢,特別是首位字段 具有特別的先發優勢,如果查詢中包含首位字段,檢索時就可以通過首位字段的值確定 RowKey 的前綴部分,從而大幅度地收窄檢索區間,如果不包含則只能在全體數據的 RowKey 上逐一查找,由此可以想見兩者在性能上的差距。

columns family

列簇,HBase中的每個列都歸屬于某個列簇,列簇是表的schema的一部分,必須在使用表之前定義。劃分columns family的原則如下:

  • 是否具有相似的數據格式;
  • 是否具有相似的訪問類型。

Hbase偽分布式搭建

1、下載Hbase

https://www.apache.org/dyn/closer.lua/hbase/hbase-1.3.6/hbase-1.3.6-bin.tar.gz?www.apache.orgwget https://mirror.bit.edu.cn/apache/hbase/hbase-1.3.6/hbase-1.3.6-bin.tar.gz

2、解壓

3、修改配置

1、設置JAVA_HOME vim hbase-env.sh export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home 2、在hbase-site.xml設置HBase的核心配置 vim hbase-site.xml <configuration><property><name>hbase.rootdir</name>//Here you have to set the path where you want HBase to store its files.<value>hdfs://localhost:9000/hbase</value></property><property><name>hbase.cluster.distributed</name><value>true</value> </property> <property><name>hbase.master.info.port</name><value>60010</value></property> </configuration> 注意: hbase.rootdir要和hadoop中core-site.xml中fs.default.name相同。

3、啟動Hbase

必須先啟動Hadoop,然后啟動Hbase。

./start-hbase.sh

4、圖形化界面

http://localhost:60010/master-status

5、hbase語法

create 語法: create '<table name>', '<column family>' Demo: create 'TEST.USER_INFO', 'INFO'put 語法:put '<table name>', 'row1','<colfamily:colname>','<value>' demo: put 'TEST.USER_INFO', 'R1', 'INFO:C1', 'r1_c1_value1' put 'TEST.USER_INFO', 'R1', 'INFO:C2', 'r1_c2_value1' put 'TEST.USER_INFO', 'R1', 'INFO:C3', 'r1_c3_value1'scan 語法:scan '<table name>' Demo: scan 'TEST.USER_INFO'get 語法:get '<table name>','row1' Demo: get 'TEST.USER_INFO' , 'R1'count 語法:count '<table name>' Demo: count 'TEST.USER_INFO'delete 語法:delete '<table name>', '<row>', '<column name >', '<time stamp>' Demo: delete 'TEST.USER_INFO', 'R1', 'INFO:C1'deleteall 語法:deleteall '<table name>', '<row>' Demo: deleteall 'TEST.USER_INFO', 'R1'drop、disable disable 'TEST.USER_INFO' drop 'TEST.USER_INFO'

用戶畫像使用場景

整體架構圖在文章開頭已經畫了。

用戶畫像不是產生數據的源頭,而是對基于數據倉庫ODS層、DW層、DM層中與用戶相關數據的二次建模加工。在ETL過程中將用戶標簽計算結果寫入Hive,由于不同數據庫有不同的應用場景,后續需要進一步將數據同步到MySQL、HBase、Elasticsearch等數據庫中。

  • Hive:存儲用戶標簽計算結果、用戶人群計算結果、用戶特征庫計算結果。
  • MySQL:存儲標簽元數據,監控相關數據,導出到業務系統的數據。
  • HBase:存儲線上接口實時調用類數據,存儲用戶標簽數據。
  • Elasticserch:支持海量數據的實時查詢分析,用于存儲用戶人群計算、用戶群透視分析所需的用戶標簽數據

其中最開始的ETL和數據標簽體系建立都是ETL工程師和數據分析師的工作。

  • 各種源數據、中間層數據、匯總數據都存在Hive中。
  • 用戶標簽源數據存Mysql中。
  • 用戶標簽的結果數據、二級索引映射表存儲HBase中。
  • ES同時存儲二級索引映射表來批量獲取索引。

例如:

為什么要用二級索引。

在線接口在查詢HBase中數據時,由于HBase無法像關系數據庫那樣根據多種條件對數據進行篩選(類似SQL語言中的where篩選條件)。一般地HBase需建立二級索引來滿足根據復雜條件查詢數據的需求。
在組合標簽查詢對應的用戶人群場景中,首先通過組合標簽的條件在Elasticsearch中查詢對應的索引數據,然后通過索引數據去HBase中批量獲取rowkey對應的數據(Elasticsearch中的documentid和HBase中的rowkey都設計為用戶id)。

ES做二級索引的兩種構建流程:

配套基于Spark/MR的批量索引創建/更新程序, 用于初次或重建已有HBase庫表的索引

備注:

用戶畫像的基本流程見:

https://zhuanlan.zhihu.com/p/147722916?zhuanlan.zhihu.com

總結

以上是生活随笔為你收集整理的/opt/hbase/conf 中不能启动hbase_浅谈Hbase在用户画像上的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。