整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          醫藥數據查詢2

          醫藥數據查詢2

          、國家藥監局查詢鏈接:

          1.https://www.nmpa.gov.cn/datasearch/home-index.html?79QlcAyHig6m=1658898341929#category=yp

          可查詢內容:

          國產藥品 進口藥品 進口藥品商品名

          境內生產藥品備案信息公示 境外生產藥品備案信息公示

          藥品生產企業許可 藥品經營企業許可

          全國藥品抽檢 藥品出口銷售證明

          GMP認證 GSP認證

          執業藥師注冊人員 互聯網藥品信息服務

          中藥提取物備案公示 中藥配方顆粒備案信息公示

          非處方藥中藥目錄 非處方藥化學藥品目錄

          藥品注冊相關專利信息公開公示 中藥保護品種

          藥物臨床試驗機構名單

          麻醉藥品和精神藥品品種目錄 國家基本藥物(2018年版)

          疫苗說明書和標簽數據庫(測試版)

          2.https://www.nmpa.gov.cn/datasearch/home-index.html?79QlcAyHig6m=1659676758519#category=ylqx

          可查詢內容:

          境內醫療器械(注冊) 境內醫療器械(注冊歷史數據)

          境內醫療器械(備案) 境內醫療器械(備案歷史數據)

          進口醫療器械(注冊) 進口醫療器械(注冊歷史數據)

          進口醫療器械(備案) 進口醫療器械(備案歷史數據)

          醫療器械生產企業(許可) 醫療器械經營企業(許可)

          醫療器械生產企業(備案) 醫療器械經營企業(備案)

          醫療器械標準目錄 醫療器械分類目錄 體外診斷試劑分類子目錄(2013版)

          一次性使用醫療器械產品

          醫療器械網絡交易服務第三方平臺

          3.https://www.nmpa.gov.cn/datasearch/home-index.html?79QlcAyHig6m=1659676758519#category=hzp

          可查詢內容:

          國產特殊化妝品注冊信息 進口特殊化妝品注冊信息 進口化妝品

          化妝品原料備案信息 化妝品注冊和備案檢驗檢測機構 化妝品生產企業

          國產普通化妝品備案信息 進口普通化妝品備案信息

          二、國家中檢所查詢鏈接:

          https://www.nifdc.org.cn/nifdc/xxgk/sjcx/index.html

          可查詢內容:

          藥包材標準 進口報告書查詢 生物制品批簽發

          三、國家藥典委員會查詢鏈接:

          http://114.247.108.159:8090/zwywxt/staticindex.html

          可查詢內容:

          指紋圖譜

          四、國家藥監局藥品審評中心

          查詢1鏈接:

          https://www.cde.org.cn/main/xxgk/listpage/9f9c74c73e0f8f56a8bfbc646055026d

          可查詢內容:

          受理品種信息 審評任務公示 溝通交流公示 特殊審批品種列表

          優先審評公示 突破性治療公示 三合一序列公示

          臨床試驗默示許可 上市藥品信息 原輔包登記信息

          查詢2鏈接:

          https://www.cde.org.cn/hymlj/listpage/9cd8db3b7530c6fa0c86485e563f93c7

          可查詢內容:

          上市化學藥品目錄集信息 說明書信息

          五、國家藥監局審核查驗中心查詢鏈接:

          https://www.cfdi.org.cn/cfdi/index?module=A002&m1=16&m2=&nty=STA020&tcode=STA022

          可查詢內容:

          藥物非臨床研究質量管理規范認證公告 藥物臨床試驗機構資格認定檢查公告

          六、國家藥監局藥品評價中心

          查詢1鏈接:

          https://www.cdr-adr.org.cn/drug_1/aqjs_1/

          可查詢內容:

          藥品警戒信息 藥品不良反應信息 藥品修訂說明書信息

          查詢2鏈接:

          http://otc.adrs.org.cn:18888/OTCweb/pages/HistoryNoticeApply.action

          可查詢內容:

          歷史公示轉換非處方藥品種名單

          七、國家市場局查詢鏈接:

          https://zwfw.samr.gov.cn/needSearch

          可查詢內容:

          國家企業信用信息公示系統 藥品廣告查詢

          八、中國市場監管行政處罰文書網查詢鏈接:

          https://cfws.samr.gov.cn/

          可查詢內容:

          藥品零售行政處罰文書

          九、藥品生產、批發需要在各省藥監行政處罰項下查詢鏈接:

          1.上海:

          http://hdcx.smda.sh.cn/XingZhengChuFa/xxgk2.aspx?pu=&qymc=&slrqstart=&slrqend=&pageindex=1&pagesize=20

          2.陜西

          http://mpa.shaanxi.gov.cn/jgxx/xzcfxx.htm

          3.北京

          http://xxcx.yjj.beijing.gov.cn/eportal/ui?pageId=723606

          4.天津

          http://scjg.tj.gov.cn/tjsscjdglwyh_52651/xwdt/xzcfxxgs/sjxzcfxx/

          5.河北

          http://yjj.hebei.gov.cn/CL0218/

          6.山西

          https://yjj.shanxi.gov.cn/aliasProject/xzzf.htm

          7.內蒙古

          http://mpa.nmg.gov.cn/zfxxgk/fdzdgknr/?gk=4

          8.遼寧

          http://ypjg.ln.gov.cn/zfxxgk_147137/fdzdgknr/cfqz/xzcf/

          9.吉林

          http://mpa.jl.gov.cn/xxgk_84894/xzcfajxxgk/

          10.黑龍江

          http://mpa.hlj.gov.cn/xzcfquery.jspx

          11.江蘇

          http://218.94.26.170:9080/datacenter/dc/sgslist/c67bbfef054d4dbcaaca538600742618

          12.浙江

          http://mpa.zj.gov.cn/col/col1229429057/index.html

          13.安徽

          http://mpa.ah.gov.cn/public/column/4140867?type=4&action=list&nav=3&catId=6719765

          14.福建

          http://yjj.scjgj.fujian.gov.cn/zwgk/gstg/ssjccjggs/

          15.江西

          http://mpa.jiangxi.gov.cn/col/col38915/index.html

          16.山東

          http://mpa.shandong.gov.cn/col/col101822/index.html

          17.河南

          http://yjj.henan.gov.cn/zwgk/zcjd/

          18.湖北

          http://fda.hubei.gov.cn/zfxxgk/fdzdgknr/cfqz/xxcfjd/#test

          19.湖南

          http://mpa.hunan.gov.cn/mpa/xxgk/zfxxgknew/c100812/c100826/xxgk_new.html

          20.廣東

          http://mpa.gd.gov.cn/ztzl/zdly/xzcfaj/index.html

          21.廣西

          http://yjj.gxzf.gov.cn/zwgk/fdzdgknr/xzzf/

          22.海南

          https://amr.hainan.gov.cn/himpa/ajxxgk/web/index.jsp

          23.重慶

          http://yaojianju.cq.gov.cn/zwgk_217/fdzdgknr/xzcf/

          24.四川

          http://yjj.sc.gov.cn/scyjj/c103184/xzcf.shtml

          25.貴州

          http://yjj.guizhou.gov.cn/zwgk/zdly/xzcf/

          26.云南

          http://mpa.yn.gov.cn/newsite/ZwgkNewsList.aspx?CID=a3330f59-3154-4327-8fd2-1569cffa5647

          27.西藏

          http://mpa.xizang.gov.cn/zwgk/gsgg/xzcfgs/

          28.甘肅

          http://apps.yjj.gansu.gov.cn:2180/xksgs.jsp

          29.青海

          http://ypjgj.qinghai.gov.cn/Article/ArticlePageYJJ?ParentSectionName=%E6%B3%95%E5%AE%9A%E4%B8%BB%E5%8A%A8%E5%85%AC%E5%BC%80%E5%86%85%E5%AE%B9§ion_id=D80B7953-6F82-4BA4-9FF8-C3C4C417D0CD&page=2&pagesize=15

          30.寧夏

          http://nxyjj.nx.gov.cn/yp/jdjc/allindex.html

          31.新疆

          http://mpa.xinjiang.gov.cn/xjyjj/xzcf/list_tyz.shtml

          十、國家法律法規數據庫查詢鏈接:

          https://flk.npc.gov.cn/

          可查詢內容:

          涉及藥品的法律和行政規范

          十一、國家醫保局查詢鏈接:

          https://fuwu.nhsa.gov.cn/nationalHallSt/#/home?code=90000&flag=false&gbFlag=true

          可查詢內容:

          國家組織藥品集中帶量采購中選價格

          定點零售藥店 國家談判藥品配備機構

          醫保藥品分類與代碼

          十二、國家市場監督管理總局特殊食品安全監督管理司查詢鏈接:

          http://ypzsx.gsxt.gov.cn/specialfood/#/food

          可查詢內容:

          保健食品注冊/備案

          嬰幼兒配方乳粉產品配方注冊 特殊醫學用途配方食品注冊

          十三、食品安全抽檢公布結果查詢系統查詢鏈接:

          https://spcjsac.gsxt.gov.cn/

          十四、食品安全國家標準數據檢索平臺查詢鏈接:

          https://sppt.cfsa.net.cn:8086/db

          十五、食品生產許可獲證企業信息查詢平臺查詢鏈接:

          http://spscxkcx.gsxt.gov.cn/spscxk/spscxkindex.xhtml

          十六、全國食品經營許可(社會公眾查詢)查詢鏈接:

          https://spjyxk.gsxt.gov.cn/cfdaPub/index/page/

          十七、國家衛生健康委員會政務服務平臺查詢鏈接:

          https://zwfw.nhc.gov.cn/cxx/ywjgcx/qgyzjg/

          可查詢內容:

          醫衛機構查詢 器官移植機構 愛嬰醫院名單 輔助生殖機構

          產前診斷技術醫療機構 醫院執業登記

          、概述

          Livy是一個提供Rest接口和spark集群交互的服務。它可以提交Spark Job或者Spark一段代碼,同步或者異步的返回結果;也提供Sparkcontext的管理,通過Restful接口或RPC客戶端庫。Livy也簡化了與Spark與應用服務的交互,這允許通過web/mobile與Spark的使用交互。其他特點還包含:

          • 提交Scala、Python或是R代碼片段到遠端的Spark集群上執行;
          • 提交Java、Scala、Python所編寫的Spark作業到遠端的Spark集群上執行;
          • 提交批處理應用在集群中運行;
          • 長時間運行的SparkContext,允許多個spark job和多個client使用;
          • 在多個spark job和客戶端之間共享RDD和Dataframe;
          • 多個sparkcontext可以簡單的管理,并運行在集群中而不是Livy Server,以此獲取更好的容錯性和并行度;
          • 作業可以通過重新編譯的jar、片段代碼、或Java/Scala的客戶端API提交。

          從Livy所提供的基本功能可以看到Livy涵蓋了原生Spark所提供的兩種處理交互方式(交互式會話批處理會話)。與原生Spark不同的是,所有操作都是通過REST的方式提交到Livy服務端上,再由Livy服務端發送到不同的Spark集群上去執行。說到這里我們首先來了解一下Livy的架構。

          官網:https://livy.incubator.apache.org/
          GitHub地址:https://github.com/apache/incubator-livy

          關于Spark的介紹,可以參考我之前的文章:大數據Hadoop之——計算引擎Spark

          二、Apache Livy模塊介紹

          1)Client

          Client 并不算 livy 的模塊,也很簡單,在此略過;

          2)router

          我們知道,livy server 提供的 api 是 rest api,Client 發送的請求也是針對各個資源(uri)的增刪改查。router 的核心職責是管理好要把對什么資源的什么操作指派給哪個類的哪個函數來處理,該模塊核心類是 SessionServlet,繼承于 ScalatraServlet,有兩個子類:InteractiveSessionServletBatchSessionServlet,分別用來路由對 session 及 batch 相關的請求;

          3)權限管理

          權限由 AccessManager 類管理,維護了幾種不同級別的 user:

          • superUser
          • modifyUser
          • viewUser
          • allowedUser
            以及不用級別的 acl(訪問控制列表):
          • viewAcls:superUsers ++ modifyUsers ++ viewUsers,對應查看權限
          • modifyAcls:superUsers ++ modifyUsers,對應修改權限(包括 kill 權限)
          • superAcls:superUsers,有所有權限
          • allowedAcls:superUsers ++ modifyUsers ++ viewUsers ++ allowedUsers,表示 acl 的全集

          在目前的實現中,livy 的權限管理尚不支持插件化且只有 AccessManager 一種實現,若要定義自己的權限管理,需要直接修改源碼。

          4)生成 Spark App

          對于 session 和 batch 的任務,生成 Spark App 的邏輯及最終生成的 Spark App 都是不同的。先來說說相對簡單的生成 session 的 Spark App 涉及的主要類:

          • ContextLauncher——用于啟動一個新的 Spark App(通過 SparkLauncher)以及獲取如何連接到其 driver 的信息(地址、clientId 及秘鑰)。
          • RSCClient——與 Spark Driver 建立連接,向其發送創建、查看狀態結果日志、修改statement、job 等請求并獲取響應。

          接下來是生成 batch 的 Spark App 涉及的主要類:

          • SparkProcessBuilder——用于從 livyConf 中提取出運行一個 Spark App 所需的一切,包括 mainClass、executableFile、deployMode、conf、master、queue、env 及 driver 和 executors 的資源配置等等;并最終生成一條啟動 Spark App 的 spark-submit 命令。
          • SparkYarnApp——用來運行 SparkProcessBuilder 生成的啟動命令,并監控管理啟動運行起來的 Spark App,包括獲取狀態、日志、診斷信息、kill 等(目前 livy 只支持 local 和 yarn 兩種模式,local 暫不進行介紹)。

          5)交互式 Driver

          需要注意的是,該模塊僅對于 session 任務有,batch 并沒有。 該模塊中,最核心的類是 RSCDriver,其繼承與 RpcDispatcher,RpcDispatcher 接收來自 RSCClient 發送的 rpc 請求,根據請求的類型調用 RSCDriver 相應的方法去處理請求中包含的具體信息,對于最核心的執行代碼片段(statement)請求,調用 repl/Session 去處理,repl/Session 最終會根據不同的 session kind 調用不同的 Interpreter 進行真正的代碼執行,目前共有 Spark、Scala、Python、R 對應的 Interpreter。

          6)狀態數據存儲

          核心類是 StateStore,狀態數據的存儲都是以 key-value 形式,目前有基于文件系統和 Zookeeper 的實現。另外,SessionStore 繼承了該類提供高階 Api 來進行 sessions 的存儲和恢復。

          三、Apache Livy架構

          1)Livy架構

          Livy是一個典型的REST服務架構,它一方面接受并解析用戶的REST請求,轉換成相應的操作;另一方面它管理著用戶所啟動的所有Spark集群。具體架構如下圖:


          用戶可以以REST請求的方式通過Livy啟動一個新的Spark集群,
          Livy將每一個啟動的Spark集群稱之為一個會話(session),一個會話是由一個完整的Spark集群所構成的,并且通過RPC協議在Spark集群和Livy服務端之間進行通信。根據處理交互方式的不同,Livy將會話分成了兩種類型

          • 交互式會話(interactive session)——這與Spark中的交互式處理相同,交互式會話在其啟動后可以接收用戶所提交的代碼片段,在遠端的Spark集群上編譯并執行;
          • 批處理會話(batch session)——用戶可以通過Livy以批處理的方式啟動Spark應用,這樣的一個方式在Livy中稱之為批處理會話,這與Spark中的批處理是相同的。

          2)Livy執行作業流程

          下面這幅圖片是Livy的基本原理,客戶端提交任務到Livy server后,Livy server啟動相應的session,然后提交作業到Yarn集群,當Yarn拉起ApplicationMaster進程后啟動SparkContext,并連接到Livy Server進行通信。后續執行的代碼會通過Livy server發送到Application進程執行。


          下面是源碼級別的詳細的執行流程:

          1. live-server啟動,啟動BatchSessionManager, InteractiveSessionManager。
          2. 初始化WebServer,通過ServletContextListener啟動InteractiveSessionServlet和BatchSessionServlet。
          3. 通過http調用SessionServlet的createSession接口,創建session并注冊到sessionManager,InteractiveSession和BatchSession會創建SparkYarnApp,SparkYarnApp負責啟動Spark作業,并維護yarnclient,獲取作業信息、狀態或kill作業。
          4. BatchSession是以jar包的方式提交作業,運行結束后session作業就結束。
          5. InteractiveSession會啟動com.cloudera.livy.repl.ReplDriver,ReplDriver繼承RSCDriver,初始化期間會通過RPC連接到livy-server,并啟動RpcServer;其次會初始化Interpreter(支持PythonInterpreter,SparkInterpreter,SparkRInterpreter)。接收來自livy-server,并啟動RpcServer;其次會初始化Interpreter(支持PythonInterpreter,SparkInterpreter,SparkRInterpreter)。接收來自livy-server的信息(代碼),然后通過Interpreter執行,livy-server通過RPC請求作業結果。

          四、環境部署

          Hadoop環境部署可參考我之前的文章:大數據Hadoop原理介紹+安裝+實戰操作(HDFS+YARN+MapReduce)

          1)下載

          Livy下載地址:https://livy.apache.org/download
          Livy官方文檔:https://livy.apache.org/get-started/
          Spark下載地址:http://spark.apache.org/downloads.html

          ### livy 下載
          #cd /opt/bigdata
          #wget https://dlcdn.apache.org/incubator/livy/0.7.1-incubating/apache-livy-0.7.1-incubating-bin.zip --no-check-certificate
          
          # 解壓
          #yum -y install unzip
          # unzip apache-livy-0.7.1-incubating-bin.zip
          
          ### spark 下載 
          cd /opt/bigdata
          wget https://dlcdn.apache.org/spark/spark-3.3.0/spark-3.3.0-bin-hadoop3.tgz  --no-check-certificate
          tar -xf spark-3.3.0-bin-hadoop3.tgz

          為了支持Spark 3.x版本,需要重新編譯,其實它對應的是livy 0.8的snapshot版本。
          https://stackoverflow.com/questions/67085984/how-to-rebuild-apache-livy-with-scala-2-12

          # 下載
          git clone https://github.com/apache/incubator-livy.git && cd incubator-livy

          修改配置

          <profile>
                <id>spark-3.3</id>
                <activation>
                  <property>
                    <name>spark-3.3</name>
                  </property>
                </activation>
                <properties>
                  <spark.scala-2.13.version>3.3.0</spark.scala-2.13.version>
                  <spark.scala-2.11.version>2.4.5</spark.scala-2.11.version>
                  <spark.version>${spark.scala-2.11.version}</spark.version>
                  <netty.spark-2.12.version>4.1.47.Final</netty.spark-2.12.version>
                  <netty.spark-2.11.version>4.1.47.Final</netty.spark-2.11.version>
                  <netty.version>${netty.spark-2.11.version}</netty.version>
                  <java.version>1.8</java.version>
                  <py4j.version>0.10.9</py4j.version>
                  <json4s.spark-2.11.version>3.5.3</json4s.spark-2.11.version>
                  <json4s.spark-2.12.version>3.6.6</json4s.spark-2.12.version>
                  <json4s.version>${json4s.spark-2.11.version}</json4s.version>
                  <spark.bin.download.url>
                    https://dlcdn.apache.org/spark/spark-3.3.0/spark-3.3.0-bin-hadoop3.tgz
                  </spark.bin.download.url>
                  <spark.bin.name>spark-3.3.0-bin-hadoop3</spark.bin.name>
                </properties>
              </profile>
          
          	 <!-- 注釋一些運行livy無需的模塊 -->
          	    <module>api</module>
          	    <module>assembly</module>
          	    <module>client-common</module>
          	    <module>client-http</module>
          	    <module>core</module>
          	    <module>core/scala-2.11</module>
          	    <module>core/scala-2.12</module>
          	    <!--<module>coverage</module>-->
          	    <!--<module>examples</module>-->
          	    <!--<module>python-api</module>-->
          	    <module>repl</module>
          	    <module>repl/scala-2.11</module>
          	    <module>repl/scala-2.12</module>
          	    <module>rsc</module>
          	    <module>scala</module>
          	    <module>scala-api</module>
          	    <module>scala-api/scala-2.11</module>
          	    <module>scala-api/scala-2.12</module>
          	    <module>server</module>
          	    <module>test-lib</module>
          	    <!--<module>integration-test</module>-->

          開始編譯

          # spark3.3.0
          mvn clean package -B -V -e \
                  -Pspark-3.3.0 \
                  -Pthriftserver \
                  -DskipTests \
                  -DskipITs \
                  -Dmaven.javadoc.skip=true


          解壓包

          cp assembly/target/apache-livy-0.8.0-incubating-SNAPSHOT-bin.zip .
          unzip apache-livy-0.8.0-incubating-SNAPSHOT-bin.zip

          這里也提供上面編譯好的部署包,有需要的小伙伴可以自行下載:

          鏈接:https://pan.baidu.com/s/1pPCbe0lUJ6ji8rvQYsVw9A?pwd=qn7i
          提取碼:
          qn7i

          2)配置

          • 環境變量設置
          vi /etc/profile
          
          export LIVY_HOME=/opt/bigdata/livy-spark/incubator-livy/apache-livy-0.8.0-incubating-SNAPSHOT-bin
          export PATH=$LIVY_HOME/bin:$PATH
          export SPARK_HOME=/opt/bigdata/spark-3.3.0-bin-hadoop3
          export PATH=$SPARK_HOME/bin:$PATH
          
          source /etc/profile
          • 修改配置文件$LIVY_HOME/conf/livy.conf
          cp $LIVY_HOME/conf/livy.conf.template  $LIVY_HOME/conf/livy.conf
          
          cat >$LIVY_HOME/conf/livy.conf<<EOF
          livy.spark.master=yarn
          livy.spark.deploy-mode=cluster
          livy.environment=production
          livy.impersonation.enabled=true
          livy.server.csrf_protection.enabled=false
          livy.server.port=8998
          livy.server.session.timeout=3600000
          livy.server.recovery.mode=recovery
          livy.server.recovery.state-store=filesystem
          livy.server.recovery.state-store.url=/tmp/livy
          livy.repl.enable-hive-context=true
          EOF
          • 修改配置文件$LIVY_HOME/conf/livy-env.sh
          cp $LIVY_HOME/conf/livy-env.sh.template  $LIVY_HOME/conf/livy-env.sh
          
          mkdir $LIVY_HOME/logs $LIVY_HOME/pid-dir
          
          cat >$LIVY_HOME/conf/livy-env.sh<<EOF
          export JAVA_HOME=/opt/jdk1.8.0_212
          export HADOOP_HOME=/opt/bigdata/hadoop/hadoop-3.3.4
          export HADOOP_CONF_DIR=/opt/bigdata/hadoop/hadoop-3.3.4/etc/hadoop
          export SPARK_CONF_DIR=/opt/bigdata/spark-3.3.0-bin-hadoop3/conf
          export SPARK_HOME=/opt/bigdata/spark-3.3.0-bin-hadoop3
          export LIVY_LOG_DIR=/opt/bigdata/livy-spark/incubator-livy/apache-livy-0.8.0-incubating-SNAPSHOT-bin/logs
          export LIVY_PID_DIR=/opt/bigdata/livy-spark/incubator-livy/apache-livy-0.8.0-incubating-SNAPSHOT-bin/pid-dir
          export LIVY_SERVER_JAVA_OPTS="-Xmx512m"
          EOF
          • 修改配置文件$LIVY_HOME/conf/spark-blacklist.conf
          cp $LIVY_HOME/conf/spark-blacklist.conf.template  $LIVY_HOME/conf/spark-blacklist.conf
          
          cat >$LIVY_HOME/conf/spark-blacklist.conf<<EOF
          spark.master
          spark.submit.deployMode
          
          # Disallow overriding the location of Spark cached jars.
          spark.yarn.jar
          spark.yarn.jars
          spark.yarn.archive
          
          # Don't allow users to override the RSC timeout.
          livy.rsc.server.idle-timeout
          EOF
          • 添加Hadoop 配置$HADOOP_HOME/etc/hadoop/core-site.xml
          <property>
            <name>hadoop.proxyuser.livy.groups</name>
            <value>*</value>
          </property>
          <property>
            <name>hadoop.proxyuser.livy.hosts</name>
            <value>*</value>
          </property>

          重啟服務

          stop-all.sh ; start-all.sh
          • HDFS 上面創建livy 的用戶目錄
          hdfs dfs -mkdir -p /user/livy
          hdfs dfs -chown livy:supergroup /user/livy

          3)啟動服務

          sh $LIVY_HOME/bin/livy-server start
          netstat -tnlp|grep 8998

          訪問Livy web 地址:http://local-168-182-110:8998

          五、Livy API 實戰操作

          rest-api官方文檔:https://livy.apache.org/docs/latest/rest-api.html
          java-api官方文檔:https://livy.apache.org/docs/latest/api/java/index.html

          、概述

          HBase 是一個面向列式存儲的分布式數據庫,其設計思想來源于 Google 的 BigTable 論文。HBase 底層存儲基于 HDFS 實現,集群的管理基于 ZooKeeper 實現。HBase 良好的分布式架構設計為海量數據的快速存儲、隨機訪問提供了可能,基于數據副本機制和分區機制可以輕松實現在線擴容、縮容和數據容災,是大數據領域中 Key-Value 數據結構存儲最常用的數據庫方案。

          官方文檔:https://hbase.apache.org/book.html
          GitHub地址:https://github.com/apache/hbase

          HBase特點:

          • 易擴展:Hbase 的擴展性主要體現在兩個方面,一個是基于運算能力(RegionServer) 的擴展,通過增加 RegionSever 節點的數量,提升 Hbase 上層的處理能力;另一個是基于存儲能力的擴展(HDFS),通過增加 DataNode 節點數量對存儲層的進行擴容,提升 HBase 的數據存儲能力。
          • 海量存儲:HBase 作為一個開源的分布式 Key-Value 數據庫,其主要作用是面向 PB 級別數據的實時入庫和快速隨機訪問。這主要源于上述易擴展的特點,使得 HBase 通過擴展來存儲海量的數據。
          • 列式存儲:Hbase 是根據列族來存儲數據的。列族下面可以有非常多的列。列式存儲的最大好處就是,其數據在表中是按照某列存儲的,這樣在查詢只需要少數幾個字段時,能大大減少讀取的數據量。
          • 高可靠性:WAL 機制保證了數據寫入時不會因集群異常而導致寫入數據丟失,Replication 機制保證了在集群出現嚴重的問題時,數據不會發生丟失或損壞。而且 Hbase 底層使用 HDFS,HDFS 本身也有備份。
          • 稀疏性:在 HBase 的列族中,可以指定任意多的列,為空的列不占用存儲空間,表可以設計得非常稀疏。

          二、Hbase的優缺點

          1)Hbase優點

          • 列的可以動態增加,并且列為空就不存儲數據,節省存儲空間.
          • Hbase自動切分數據,使得數據存儲自動具有水平scalability.
          • Hbase可以提供高并發讀寫操作的支持

          2)Hbase缺點

          • 不能支持條件查詢,只支持按照Row key來查詢.
          • 暫時不能支持Master server的故障切換,當Master宕機后,整個存儲系統就會掛掉.

          三、HBase數據模型

          HBase是運行在Hadoop集群上的一個數據庫,與傳統的數據庫有嚴格的ACID(原子性、一致性、隔離性、持久性)要求不一樣,HBase降低了這些要求從而獲得更好的擴展性,它更適合存儲一些非結構化和半結構化的數據。

          1)邏輯模型

          • 表命名空間(Namespace):表命名空間不是強制的,當想把多個表分到一個組去統一管理的時候才會用到表命名空間;
          • 表(Table):Hbase采用表來組織數據;一個表由一個或多個列族組成。數據屬性,比如超時時間(TTL)、壓縮算法(COMPRESSION)等,都在列族的定義中定義。
          • 行(Row):一個行包含多個列,這些列通過列族來分類。行中數據所屬列族只能只能從該表所定義的列族選擇,否則會得到一個NoSuchColumnFamilyException。由于HBase是一個列式數據庫,所以一個行中的數據可以分布在不同的RegionServer上。
          • 列標識(Column Qualifier):多個列組成一個行。列族和列經常用Column
          • 列族(Column Family):一個table有許多個列族,列族是列的集合,屬于表結構,也是表的基本訪問控制單元。
          • Column Family:Column Qualifier形式標識;
          • 時間戳(Timestamp):用來區分數據的不同版本;
          • 單元格(Cell):通過行、列族、列、時間戳可以確定一個單元格,存儲的數據沒有數據類型,是字節數組byte[]。

          以上幾個概念以及它們之間的關系可以用下圖表示:

          2)物理模型

          實際存儲方式:每個Region由多個Store構成,每個Store保存一個column family。

          • 邏輯數據模型中空白cell在物理上是不存儲的,因此若一個請求為要獲取t8時間的contents:html,他的結果就是空。相似的,若請求為獲取t9時間的anchor:my.look.ca,結果也是空。但是,如果不指明時間,將會返回最新時間的行,每個最新的都會返回。
          • 在一個HBase中,存儲了很多HBase表,當表中包含的行數量非常龐大,無法在一臺機器上存儲時,需要分布存儲到多臺機器上,需要根據行鍵的值對表中進行分區,每個行分區被稱為“Region”
          • Master主服務器把不同的Region分配到不同的Region服務器上,同一個Region不會拆分到多個Region服務器上,每個Region服務器負責管理一個Region集合,通常每個Region服務器上會放置10~1000個Region。

          四、HBase 架構與原理

          1)HBase讀流程

          2)HBase寫流程

          數據flush過程

          • 當MemStore數據達到閾值(默認是128M,老版本是64M),將數據刷到硬盤,將內存中的數據刪除,同時刪除HLog中的歷史數據;
          • 并將數據存儲到HDFS中;

          數據合并過程

          • 當數據塊達到4塊,Hmaster將數據塊加載到本地,進行合并;
          • 當合并的數據超過256M,進行拆分,將拆分后的Region分配給不同的HregionServer管理;
          • 當HregionServer宕機后,將HregionServer上的hlog拆分,然后分配給不同的HregionServer加載,修改.META.;

          【溫馨提示】HLog會同步到HDFS。

          五、環境部署(全分布模式)

          HBase有三種運行模式:

          • 單機模式:只在一臺計算機運行,這種模式下,HBase所有進程包括Maste、HRegionServer、和Zookeeper都在同一個JVM中運行,存儲機制采用本地文件系統,沒有采用分布式文件系統HDFS。
          • 偽分布模式:只在一臺計算機運行,這種模式下,HBase所有進程都運行在不同一個節點,在一個節點上模擬了一個具有HBase完整功能的微型集群,存儲機制采用分布式文件系統HDFS,但是HDFS的NameNode和DataNode都位于同一臺計算機上。
          • 全分布模式:在多臺計算機上運行,這種模式下,HBase的守護進程運行在多個節點上,形成一個真正意義上的集群,存儲機制采用分布式文件系統HDFS,且HDFS的NameNode和DataNode位于不同計算機上。

          1)環境準備

          主機名

          IP

          角色

          local-168-182-110

          192.168.182.110

          NodeManager、QuorumPeerMain、HMaster、DataNode、HRegionServer

          local-168-182-111

          192.168.182.111

          DataNode、HRegionServer、SecondaryNameNode、NodeManager、QuorumPeerMain

          local-168-182-112

          192.168.182.112

          NodeManager、HRegionServer、DataNode、QuorumPeerMain

          2)安裝JDK

          官網下載:https://www.oracle.com/java/technologies/downloads/

          百度云下載

          鏈接:https://pan.baidu.com/s/1-rgW-Z-syv24vU15bmMg1w
          提取碼:8888

          cd /opt/
          tar -xf jdk-8u212-linux-x64.tar.gz
          
          # 在文件加入環境變量/etc/profile
          export JAVA_HOME=/opt/jdk1.8.0_212
          export PATH=$JAVA_HOME/bin:$PATH
          export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
          # source加載
          source /etc/profile
          # 查看jdk版本
          java -version

          3)安裝ZooKeeper

          也可以參考我之前的文章:分布式開源協調服務——Zookeeper

          1、下載解壓

          下載地址:https://zookeeper.apache.org/releases.html

          cd /opt/bigdata/
          wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz --no-check-certificate
          tar -xf  apache-zookeeper-3.8.0-bin.tar.gz

          2、配置環境變量

          vi /etc/profile
          export ZOOKEEPER_HOME=/opt/bigdata/apache-zookeeper-3.8.0-bin/
          export PATH=$ZOOKEEPER_HOME/bin:$PATH
          
          # 加載生效
          source /etc/profile

          3、配置

          cd $ZOOKEEPER_HOME
          cp conf/zoo_sample.cfg conf/zoo.cfg
          mkdir $ZOOKEEPER_HOME/data
          cat >conf/zoo.cfg<<EOF
          # tickTime:Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。tickTime以毫秒為單位。session最小有效時間為tickTime*2
          tickTime=2000
          
          # Zookeeper保存數據的目錄,默認情況下,Zookeeper將寫數據的日志文件也保存在這個目錄里。不要使用/tmp目錄
          dataDir=/opt/bigdata/apache-zookeeper-3.8.0-bin/data
          
          # 端口,默認就是2181
          clientPort=2181
          
          # 集群中的follower服務器(F)與leader服務器(L)之間初始連接時能容忍的最多心跳數(tickTime的數量),超過此數量沒有回復會斷開鏈接
          initLimit=10
          
          # 集群中的follower服務器與leader服務器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)
          syncLimit=5
          
          # 最大客戶端鏈接數量,0不限制,默認是0
          maxClientCnxns=60
          
          # zookeeper集群配置項,server.1,server.2,server.3是zk集群節點;hadoop-node1,hadoop-node2,hadoop-node3是主機名稱;2888是主從通信端口;3888用來選舉leader
          server.1=local-168-182-110:2888:3888
          server.2=local-168-182-111:2888:3888
          server.3=local-168-182-112:2888:3888
          EOF

          4、配置myid

          echo 1 > $ZOOKEEPER_HOME/data/myid

          5、將配置推送到其它節點

          scp -r $ZOOKEEPER_HOME local-168-182-111:/opt/bigdata/
          scp -r $ZOOKEEPER_HOME local-168-182-112:/opt/bigdata/
          # 也需要添加環境變量和修改myid,local-168-182-111的myid設置2,local-168-182-112的myid設置3

          6、啟動服務

          cd $ZOOKEEPER_HOME
          # 啟動
          ./bin/zkServer.sh start
          # 查看狀態
          ./bin/zkServer.sh status

          4)安裝Hadoop

          也可以參考我之前的文章:大數據Hadoop原理介紹+安裝+實戰操作(HDFS+YARN+MapReduce)

          1、下載解壓

          下載地址:https://dlcdn.apache.org/hadoop/common/

          mkdir -p /opt/bigdata/hadoop && cd /opt/bigdata/hadoop
          wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz --no-check-certificate
          # 解壓
          tar -zvxf hadoop-3.3.4.tar.gz

          2、修改配置文件

          配置環境變量

          vi /etc/profile
          export HADOOP_HOME=/opt/bigdata/hadoop/hadoop-3.3.4
          export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
          
          # 加載生效
          source /etc/profile
          • 修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh
          # 在hadoop-env.sh文件末尾追加
          export JAVA_HOME=/opt/jdk1.8.0_212
          export HDFS_NAMENODE_USER=root
          export HDFS_DATANODE_USER=root
          export HDFS_SECONDARYNAMENODE_USER=root
          export YARN_RESOURCEMANAGER_USER=root
          export YARN_NODEMANAGER_USER=root
          • 修改$HADOOP_HOME/etc/hadoop/core-site.xml #核心模塊配置
          # 創建存儲目錄
          mkdir -p /opt/bigdata/hadoop/data/hadoop-3.3.4
          <!-- 在<configuration></configuration>中間添加如下內容 -->
          <!-- 設置默認使用的文件系統 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系統 -->
          <property>
            <name>fs.defaultFS</name>
            <value>hdfs://local-168-182-110:8082</value>
          </property>
          
          <!-- 設置Hadoop本地保存數據路徑 -->
          <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/bigdata/hadoop/data/hadoop-3.3.4</value>
          </property>
          
          <!-- 設置HDFS web UI用戶身份 -->
          <property>
            <name>hadoop.http.staticuser.user</name>
            <value>root</value>
          </property>
          
          <!-- 聚合hive 用戶代理設置 -->
          <property>
            <name>hadoop.proxyuser.hosts</name>
            <value>*</value>
          </property>
          
          <!-- 用戶代理設置 -->
          <property>
            <name>hadoop.proxyuser.root.groups</name>
            <value>*</value>
          </property>
          
          <!-- 文件系統垃圾桶保存時間 -->
          <property>
            <name>fs.trash.interval</name>
            <value>1440</value>
          </property>
          • 修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml #hdfs文件系統模塊配置
          <!-- 在<configuration></configuration>中間添加如下內容 -->
          <!-- 設置SNN進程運行機器位置信息 -->
          <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>local-168-182-111:9868</value>
          </property>
          
          <!-- 必須將dfs.webhdfs.enabled屬性設置為true,否則就不能使用webhdfs的LISTSTATUS、LISTFILESTATUS等需要列出文件、文件夾狀態的命令,因為這些信息都是由namenode來保存的。 -->
          <property>
            <name>dfs.webhdfs.enabled</name>
            <value>true</value>
          </property>
          
          <!-- nameservice的邏輯名稱。可以為任意可讀字符串;如果在Federation中使用,那么還應該包含其他的nameservices,以","分割。 -->
          <property>
            <name>dfs.nameservices</name>
            <value>ns1</value>
          </property>
          • 修改$HADOOP_HOME/etc/hadoop/mapred.xml #MapReduce模塊配置
          <!-- 設置MR程序默認運行模式,yarn集群模式,local本地模式 -->
          <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
          </property>
          
          <!-- MR程序歷史服務地址 -->
          <property>
            <name>mapreduce.jobhistory.address</name>
            <value>local-168-182-110:10020</value>
          </property>
          
          <!-- MR程序歷史服務web端地址 -->
          <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>local-168-182-110:19888</value>
          </property>
          
          <!-- yarn環境變量 -->
          <property>
            <name>yarn.app.mapreduce.am.env</name>
            <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
          </property>
          
          <!-- map環境變量 -->
          <property>
            <name>mapreduce.map.env</name>
            <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
          </property>
          
          <!-- reduce環境變量 -->
          <property>
            <name>mapreduce.reduce.env</name>
            <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
          </property>
          • 修改$HADOOP_HOME/etc/hadoop/yarn-site.xml #yarn模塊配置
          <!-- 在<configuration></configuration>中間添加如下內容 -->
          <!-- 設置YARN集群主角色運行集群位置 -->
          <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>local-168-182-110</value>
          </property>
          
          <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
          </property>
          
          <!-- 是否將對容器實施物理內存限制 -->
          <property>
            <name>yarn.nodemanager.pmem-check-enabled</name>
            <value>false</value>
          </property>
          
          <!-- 是否將對容器實施虛擬內存限制 -->
          <property>
            <name>yarn.nodemanager.vmem-check-enabled</name>
            <value>false</value>
          </property>
          
          <!-- 開啟日志聚集 -->
          <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
          </property>
          
          <!-- 設置yarn歷史服務器地址 -->
          <property>
            <name>yarn.log.server.url</name>
            <value>http://local-168-182-110:19888/jobhistory/logs</value>
          </property>
          
          <!-- 設置yarn歷史日志保存時間 7天 -->
          <property>
            <name>yarn.log-aggregation.retain-seconds</name>
            <value>604880</value>
          </property>
          • 修改$HADOOP_HOME/etc/hadoop/workers
            將下面內容覆蓋文件,默認只有localhost
          local-168-182-110
          local-168-182-111
          local-168-182-112

          3、分發同步hadoop安裝包到另外幾臺機器

          scp -r $HADOOP_HOME local-168-182-111:/opt/bigdata/hadoop/
          scp -r $HADOOP_HOME local-168-182-112:/opt/bigdata/hadoop/
          # 注意也需要設置環境變量
          
          vi /etc/profile
          
          export HADOOP_HOME=/opt/bigdata/hadoop/hadoop-3.3.4
          export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
          
          # 加載
          source /etc/profile

          4、Hadoop集群啟停(local-168-182-110上執行)

          1)(首次啟動)格式化namenode(只能執行一次)

          • 首次啟動HDFS時,必須對其進行格式化操作
          • format本質上初始化工作,進行HDFS清理和準備工作
          hdfs namenode -format

          2)手動逐個進程啟停

          # HDFS集群啟動
          hdfs --daemon [start|stop] [namenode|datanode|secondarynamenode]
          # YARN集群啟動
          yarn --daemon [start|stop] [resourcemanager|nodemanager]

          3)通過shell腳本一鍵啟停(推薦)

          在local-168-182-110上,使用軟件自帶的shell腳本一鍵啟動。前提:配置好機器之間的SSH免密登錄和works文件

          start-dfs.sh
          stop-dfs.sh #這里不執行
          
          # YARN集群啟停
          start-yarn.sh
          stop-yarn.sh # 這里不執行
          
          # Hadoop集群啟停(HDFS+YARN)
          start-all.sh
          stop-all.sh # 這里不執行
          
          # 查看
          jps

          HDFS集群訪問:http://local-168-182-110:9870

          YARN集群訪問:http://local-168-182-110:8088

          5)部署HBase

          1、下載解壓

          下載地址:http://hbase.apache.org/downloads.html

          cd /opt/bigdata
          wget https://dlcdn.apache.org/hbase/2.4.13/hbase-2.4.13-bin.tar.gz --no-check-certificate
          # 解壓
          tar -xf hbase-2.4.13-bin.tar.gz
          # 配置環境變量
          vi /etc/profile
          
          export HBASE_HOME=/opt/bigdata/hbase-2.4.13
          export PATH=$HBASE_HOME/bin:$PATH
          
          source /etc/profile

          2、配置HBase

          • 配置$HBASE_HOME/conf/hbase-env.sh,添加或修改以下內容:
          export JAVA_HOME=/opt/jdk1.8.0_212
          export HBASE_CLASSPATH=/opt/bigdata/hbase-2.4.13/conf
          export HBASE_MANAGES_ZK=false
          • 配置$HBASE_HOME/conf/hbase-site.xml
          <configuration>
              <property>
                  <name>hbase.rootdir</name>
                  <value>hdfs://local-168-182-110:8082/hbase</value>
                  <!-- hdfs://ns1/hbase 對應hdfs-site.xml的dfs.nameservices屬性值 -->
              </property>
          
              <property>
                  <name>hbase.cluster.distributed</name>
                  <value>true</value>
              </property>
              <property>
                  <name>hbase.zookeeper.quorum</name>
                  <value>local-168-182-110,local-168-182-111,local-168-182-112</value>
              </property>
              <property>
                  <name>hbase.zookeeper.property.clientPort</name>
                  <value>2181</value>
              </property>
          
              <property>
                  <name>hbase.master</name>
                  <value>60000</value>
                  <description>單機版需要配主機名/IP和端口,HA方式只需要配端口</description>
              </property>
              <property>
                  <name>hbase.master.info.bindAddress</name>
                  <value>0.0.0.0</value>
              </property>
              <property>
                  <name>hbase.master.port</name>
                  <value>16000</value>
              </property>
              <property>
                  <name>hbase.master.info.port</name>
                  <value>16010</value>
              </property>
              <property>
                  <name>hbase.regionserver.port</name>
                  <value>16020</value>
              </property>
              <property>
                  <name>hbase.regionserver.info.port</name>
                  <value>16030</value>
              </property>
          
              <property>
                  <name>hbase.wal.provider</name>
                  <value>filesystem</value> <!--也可以用multiwal-->
              </property>
          </configuration>

          hbase-site.xml參數說明:
          1.
          hbase.rootdir:這個目錄是 RegionServer 的共享目錄,用來持久化 HBase。特別注意的是 hbase.rootdir 里面的 HDFS 地址是要跟 Hadoop 的 core-site.xml 里面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、端口必須一致。(HA環境下,dfs.nameservices 是由zookeeper來決定的)。
          2. hbase.cluster.distributed:HBase 的運行模式。為 false 表示單機模式,為 true 表示分布式模式。若為 false,HBase 和 ZooKeeper 會運行在同一個 JVM 中。
          3. hbase.master:如果只設置單個 Hmaster,那么 hbase.master 屬性參數需要設置為 master:60000 (主機名:60000);如果要設置多個 Hmaster,那么我們只需要提供端口 60000,因為選擇真正的 master 的事情會有 zookeeper 去處理。
          4. hbase.tmp.dir:本地文件系統的臨時文件夾。可以修改到一個更為持久的目錄上(/tmp會在重啟時清除)。
          5. hbase.zookeeper.quorum:對于 ZooKeeper 的配置。至少要在 hbase.zookeeper.quorum 參數中列出全部的 ZooKeeper 的主機,用逗號隔開。該屬性值的默認值為 localhost,這個值顯然不能用于分布式應用中。
          6. hbase.zookeeper.property.dataDir:這個參數用戶設置 ZooKeeper 快照的存儲位置,默認值為 /tmp,顯然在重啟的時候會清空。因為筆者的 ZooKeeper 是獨立安裝的,所以這里路徑是指向了$ZOOKEEPER_HOME/conf/zoo.cfg 中 dataDir 所設定的位置。
          7. hbase.zookeeper.property.clientPort:客戶端連接 ZooKeeper 的端口。默認是2181。
          8. zookeeper.session.timeout:ZooKeeper 會話超時。Hbase 把這個值傳遞改 zk 集群,向它推薦一個會話的最大超時時間。
          9. hbase.regionserver.restart.on.zk.expire:當 regionserver 遇到 ZooKeeper session expired, regionserver 將選擇 restart 而不是 abort。

          • 配置$HBASE_HOME/conf/regionservers
          local-168-182-110
          local-168-182-111
          local-168-182-112
          • 復制Hadoop的關鍵配置文件到conf目錄
          cp $HADOOP_HOME/etc/hadoop/core-site.xml  $HADOOP_HOME/etc/hadoop/hdfs-site.xml $HBASE_HOME/conf/

          3、復制配置好的包到其它節點

          scp -r $HBASE_HOME local-168-182-111:/opt/bigdata/
          scp -r $HBASE_HOME local-168-182-112:/opt/bigdata/
          # 注意在其它節點也配置環境變量
          
          # 配置環境變量
          vi /etc/profile
          
          export HBASE_HOME=/opt/bigdata/hbase-2.4.13
          export PATH=$HBASE_HOME/bin:$PATH
          
          source /etc/profile

          4、啟動和停止HBase

          【溫馨提示】在其中一臺啟動即可,啟動其它節點得hbase服務,跟hadoop啟動類似

          start-hbase.sh
          stop-hbase.sh

          5、測試

          命令測試

          #登入HBase(跟MySQL類似)
          hbase shell


          web訪問:http://local-168-182-110:16010/


          環境部署就到這里了,有任何疑問歡迎給我留言哦~

          六、HBase與其它數據庫對比

          1)HBase與傳統數據庫對比

          對比項

          Hbase

          傳統數據庫

          數據類型

          Hbase只有簡單的數據類型,只保留字符串

          傳統數據庫有豐富的數據類型

          數據操作

          Hbase只有簡單的插入、查詢、刪除、清空等操作,表和表之間是分離的,沒有復雜的表和表之間的關系

          傳統數據庫通常有各式各樣的函數和連接操作

          存儲模式

          Hbase是基于列存儲的,每個列族都由幾個文件保存,不同列族的文件是分離的,這樣的好處是數據即是索引,訪問查詢涉及的列大量降低系統的I/O,并且每一列由一個線索來處理,可以實現查詢的并發處理

          傳統數據庫是基于表格結構和行存儲,其沒有建立索引將耗費大量的I/O并且建立索引和物化試圖需要耗費大量的時間和資源

          數據維護

          Hbase的更新實際上是插入了新的數據

          傳統數據庫只是替換和修改

          可伸縮性

          Hbase可以輕松的增加或減少硬件的數目,并且對錯誤的兼容性比較高

          傳統數據庫需要增加中間層才能實現這樣的功能

          事務

          Hbase只可以實現單行的事務性,意味著行與行之間、表與表之前不必滿足事務性

          傳統數據庫是可以實現跨行的事務性

          2)HBase與ClickHouse對比

          對比項

          Hbase

          Clickhouse

          數據存儲

          Zookeeper保存元數據,數據寫入HDFS(非結構化數據)

          Zookeeper保存元數據,數據存儲在本地,且會壓縮

          查詢

          不支持標準sql,需要集成Phoenix插件。Hbase自身有Scan操作,但是不建議執行,一般會全量掃描導致集群崩潰

          支持sql,擁有高效的查詢能力

          數據讀寫

          支持隨機讀寫,刪除。更新操作是插入一條新timestamp的數據

          支持讀寫,但不能刪除和更新

          維護

          需要同時維護HDFS、Zookeeper和Hbase(甚至于Phoenix)

          額外維護Zookeeper

          Hbase更適合非結構化的數據存儲,ClickHouse擁有高效的查詢能力。

          關于HBase的介紹和環境部署就先到這里了,后面會分享HBase的實戰操作,請小伙伴耐心等待,有疑問的小伙伴歡迎給我留言哦~


          主站蜘蛛池模板: 亚洲天堂一区在线| 美女视频一区二区| 在线免费视频一区| 国产在线不卡一区| 国精产品一区二区三区糖心 | 怡红院一区二区在线观看| 国产麻豆剧果冻传媒一区| 国模私拍一区二区三区| 无码人妻AⅤ一区二区三区水密桃| 老熟妇仑乱视频一区二区 | 激情综合一区二区三区| 国产精品伦子一区二区三区| 无码人妻精品一区二区三区久久| 精品一区二区三区影院在线午夜| 91精品国产一区二区三区左线| 久久久久人妻一区精品果冻| 夜夜精品视频一区二区| 色欲AV蜜臀一区二区三区| 久久国产精品免费一区| 亚洲AV无码国产精品永久一区| 奇米精品视频一区二区三区| 国内国外日产一区二区| 久久精品国产一区二区电影| 无码毛片一区二区三区视频免费播放 | 亚洲日本一区二区三区| 亚洲熟女少妇一区二区| 国产福利电影一区二区三区| 精品成人一区二区三区免费视频| 亚洲熟妇AV一区二区三区宅男| 亚洲影视一区二区| 国产成人综合一区精品| 一区国产传媒国产精品| 无码国产精品一区二区免费式影视| 久久国产精品最新一区| 亚欧成人中文字幕一区 | 国精品无码一区二区三区在线| 精品无码综合一区| 亲子乱AV视频一区二区| 日本一区二区不卡在线| 亚洲av福利无码无一区二区| 无码囯产精品一区二区免费|