、国家药监局查询链接:
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小时内与您取得联系。