、國家藥監局查詢鏈接:
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的使用交互。其他特點還包含:
從Livy所提供的基本功能可以看到Livy涵蓋了原生Spark所提供的兩種處理交互方式(交互式會話和批處理會話)。與原生Spark不同的是,所有操作都是通過REST的方式提交到Livy服務端上,再由Livy服務端發送到不同的Spark集群上去執行。說到這里我們首先來了解一下Livy的架構。
官網:https://livy.incubator.apache.org/
GitHub地址:https://github.com/apache/incubator-livy
關于Spark的介紹,可以參考我之前的文章:大數據Hadoop之——計算引擎Spark
Client 并不算 livy 的模塊,也很簡單,在此略過;
我們知道,livy server 提供的 api 是 rest api,Client 發送的請求也是針對各個資源(uri)的增刪改查。router 的核心職責是管理好要把對什么資源的什么操作指派給哪個類的哪個函數來處理,該模塊核心類是 SessionServlet,繼承于 ScalatraServlet,有兩個子類:InteractiveSessionServlet 及 BatchSessionServlet,分別用來路由對 session 及 batch 相關的請求;
權限由 AccessManager 類管理,維護了幾種不同級別的 user:
在目前的實現中,livy 的權限管理尚不支持插件化且只有 AccessManager 一種實現,若要定義自己的權限管理,需要直接修改源碼。
對于 session 和 batch 的任務,生成 Spark App 的邏輯及最終生成的 Spark App 都是不同的。先來說說相對簡單的生成 session 的 Spark App 涉及的主要類:
接下來是生成 batch 的 Spark App 涉及的主要類:
需要注意的是,該模塊僅對于 session 任務有,batch 并沒有。 該模塊中,最核心的類是 RSCDriver,其繼承與 RpcDispatcher,RpcDispatcher 接收來自 RSCClient 發送的 rpc 請求,根據請求的類型調用 RSCDriver 相應的方法去處理請求中包含的具體信息,對于最核心的執行代碼片段(statement)請求,調用 repl/Session 去處理,repl/Session 最終會根據不同的 session kind 調用不同的 Interpreter 進行真正的代碼執行,目前共有 Spark、Scala、Python、R 對應的 Interpreter。
核心類是 StateStore,狀態數據的存儲都是以 key-value 形式,目前有基于文件系統和 Zookeeper 的實現。另外,SessionStore 繼承了該類提供高階 Api 來進行 sessions 的存儲和恢復。
Livy是一個典型的REST服務架構,它一方面接受并解析用戶的REST請求,轉換成相應的操作;另一方面它管理著用戶所啟動的所有Spark集群。具體架構如下圖:
用戶可以以REST請求的方式通過Livy啟動一個新的Spark集群,Livy將每一個啟動的Spark集群稱之為一個會話(session),一個會話是由一個完整的Spark集群所構成的,并且通過RPC協議在Spark集群和Livy服務端之間進行通信。根據處理交互方式的不同,Livy將會話分成了兩種類型:
下面這幅圖片是Livy的基本原理,客戶端提交任務到Livy server后,Livy server啟動相應的session,然后提交作業到Yarn集群,當Yarn拉起ApplicationMaster進程后啟動SparkContext,并連接到Livy Server進行通信。后續執行的代碼會通過Livy server發送到Application進程執行。
下面是源碼級別的詳細的執行流程:
Hadoop環境部署可參考我之前的文章:大數據Hadoop原理介紹+安裝+實戰操作(HDFS+YARN+MapReduce)
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
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
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
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
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
<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 dfs -mkdir -p /user/livy
hdfs dfs -chown livy:supergroup /user/livy
sh $LIVY_HOME/bin/livy-server start
netstat -tnlp|grep 8998
訪問Livy web 地址:http://local-168-182-110:8998
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是運行在Hadoop集群上的一個數據庫,與傳統的數據庫有嚴格的ACID(原子性、一致性、隔離性、持久性)要求不一樣,HBase降低了這些要求從而獲得更好的擴展性,它更適合存儲一些非結構化和半結構化的數據。
以上幾個概念以及它們之間的關系可以用下圖表示:
實際存儲方式:每個Region由多個Store構成,每個Store保存一個column family。
數據flush過程
數據合并過程
【溫馨提示】HLog會同步到HDFS。
HBase有三種運行模式:
主機名 | 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 |
官網下載: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
也可以參考我之前的文章:分布式開源協調服務——Zookeeper
下載地址: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
vi /etc/profile
export ZOOKEEPER_HOME=/opt/bigdata/apache-zookeeper-3.8.0-bin/
export PATH=$ZOOKEEPER_HOME/bin:$PATH
# 加載生效
source /etc/profile
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
echo 1 > $ZOOKEEPER_HOME/data/myid
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
cd $ZOOKEEPER_HOME
# 啟動
./bin/zkServer.sh start
# 查看狀態
./bin/zkServer.sh status
也可以參考我之前的文章:大數據Hadoop原理介紹+安裝+實戰操作(HDFS+YARN+MapReduce)
下載地址: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
配置環境變量
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-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
# 創建存儲目錄
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>
<!-- 在<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>
<!-- 設置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>
<!-- 在<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>
local-168-182-110
local-168-182-111
local-168-182-112
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
hdfs namenode -format
# HDFS集群啟動
hdfs --daemon [start|stop] [namenode|datanode|secondarynamenode]
# YARN集群啟動
yarn --daemon [start|stop] [resourcemanager|nodemanager]
在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
下載地址: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
export JAVA_HOME=/opt/jdk1.8.0_212
export HBASE_CLASSPATH=/opt/bigdata/hbase-2.4.13/conf
export HBASE_MANAGES_ZK=false
<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。
local-168-182-110
local-168-182-111
local-168-182-112
cp $HADOOP_HOME/etc/hadoop/core-site.xml $HADOOP_HOME/etc/hadoop/hdfs-site.xml $HBASE_HOME/conf/
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
【溫馨提示】在其中一臺啟動即可,啟動其它節點得hbase服務,跟hadoop啟動類似
start-hbase.sh
stop-hbase.sh
命令測試
#登入HBase(跟MySQL類似)
hbase shell
web訪問:http://local-168-182-110:16010/
環境部署就到這里了,有任何疑問歡迎給我留言哦~
對比項 | Hbase | 傳統數據庫 |
數據類型 | Hbase只有簡單的數據類型,只保留字符串 | 傳統數據庫有豐富的數據類型 |
數據操作 | Hbase只有簡單的插入、查詢、刪除、清空等操作,表和表之間是分離的,沒有復雜的表和表之間的關系 | 傳統數據庫通常有各式各樣的函數和連接操作 |
存儲模式 | Hbase是基于列存儲的,每個列族都由幾個文件保存,不同列族的文件是分離的,這樣的好處是數據即是索引,訪問查詢涉及的列大量降低系統的I/O,并且每一列由一個線索來處理,可以實現查詢的并發處理 | 傳統數據庫是基于表格結構和行存儲,其沒有建立索引將耗費大量的I/O并且建立索引和物化試圖需要耗費大量的時間和資源 |
數據維護 | Hbase的更新實際上是插入了新的數據 | 傳統數據庫只是替換和修改 |
可伸縮性 | Hbase可以輕松的增加或減少硬件的數目,并且對錯誤的兼容性比較高 | 傳統數據庫需要增加中間層才能實現這樣的功能 |
事務 | Hbase只可以實現單行的事務性,意味著行與行之間、表與表之前不必滿足事務性 | 傳統數據庫是可以實現跨行的事務性 |
對比項 | Hbase | Clickhouse |
數據存儲 | Zookeeper保存元數據,數據寫入HDFS(非結構化數據) | Zookeeper保存元數據,數據存儲在本地,且會壓縮 |
查詢 | 不支持標準sql,需要集成Phoenix插件。Hbase自身有Scan操作,但是不建議執行,一般會全量掃描導致集群崩潰 | 支持sql,擁有高效的查詢能力 |
數據讀寫 | 支持隨機讀寫,刪除。更新操作是插入一條新timestamp的數據 | 支持讀寫,但不能刪除和更新 |
維護 | 需要同時維護HDFS、Zookeeper和Hbase(甚至于Phoenix) | 額外維護Zookeeper |
Hbase更適合非結構化的數據存儲,ClickHouse擁有高效的查詢能力。
關于HBase的介紹和環境部署就先到這里了,后面會分享HBase的實戰操作,請小伙伴耐心等待,有疑問的小伙伴歡迎給我留言哦~
*請認真填寫需求信息,我們會在24小時內與您取得聯系。