概述
- 适用场景:
适用于数据量级不是特别大,但未来可能比较大,需要扩展性。并且数据安全性要求不高,允许部分损失(单节点也不是那么容易挂)。
伪分布式能够少占用资源的情况下,符合上面特性。
在存储扩展上,可以通过添加dn节点解决,文件调度上,可以添加ResourceManager节点解决,查询等操作瓶颈时,也可以添加regionServer节点解决。 - 安装流程:
hbase底层需要hdfs和yarn的支持,所以需要先安装hadoop。
然后安装hbase。
因为hbase会把元数据信息存放在zookeeper中,虽然伪分布hbase可以使用自带的zookeeper,但为了以后扩展,还是独立安装一个zookeeper。
最后整合phoenix。 - 本文安装版本:
hadoop 3.2.0
hbase 1.4.10 (需要看下phoenix是否支持,目前最高版本2.2 phoenix不支持)
zookeeper 3.4.14
phoenix 4.14.3 - HBase 1.4
hadoop安装
流程参照官方安装文档
hdfs安装
- 先配置环境变量etc/hadoop/hadoop-env.sh(其中的JAVA_HOME就可)
export JAVA_HOME=/usr/java/latest- 如果需要在root下启动,则需要配置(在文件末尾上添加)
hdfs:yarn:export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=rootexport YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root
- 如果需要在root下启动,则需要配置(在文件末尾上添加)
- 配置内部调用端口etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
- 配置副本数量etc/hadoop/hdfs-site.xml(伪分布,一个副本)
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
- 顺带可以配置一下数据等存储路径(默认在linux的tmp下,可能会被清)
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/namenodedir</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/datanodedir</value>
</property>
- hadoop内部通讯需要免密ssh
- 先测试ssh是否已经配置免密
ssh localhost- 如果需要输入密码,则配置一下免密
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys - 初始化文件系统
bin/hdfs namenode -format - 启动hdfs
$ sbin/start-dfs.sh - 可以在9870端口访问管理页(官方文档写的是50070端口,这个是旧版本的,新版本无法访问)。
yarn安装
- 配置etc/hadoop/mapred-site.xml(mr使用yarn框架)
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> - 配置etc/hadoop/yarn-site.xml(数据分发策略)
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> - 启动yarn
$ sbin/start-yarn.sh - 可以在8088端口访问管理页
zookeeper安装
流程参照官方安装文档
- 配置conf/zoo.cfg(默认有个zoo_sample.cfg,复制改名就行)
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
#加一下数据存储的路径 官方伪分布下没设置
dataDir=/usr/zookeeper-3.4.14/data
- 启动
bin/zkServer.sh start
hbase安装
流程参照官方安装文档
- 先配置环境变量conf/hbase-env.sh(其中的JAVA_HOME就可)
# Set environment variables here.
# The java implementation to use.
export JAVA_HOME=/usr/java/latest
- 配置conf/hbase-site.xml(开启分布式模式,并且设置下hdfs的调用路径,最后设置下自己的zookeeper地址)
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper</value>
</property>
- 启动
bin/start-hbase.sh
- 可以在16010端口上访问管理页面
整合phoenix
流程参照官方安装文档
- 复制phoenix安装包中phoenix-[version]-server.jar规则的到hbase的lib目录下
- 在bin下删除hbase-site.xml,然后对hbase中的hbase-site.xml做下软连
- 重启hbase
- 启动phoenix(如果hbase-site.xml没有配置zookeeper,则启动phoenix命令后面加下zookeeper地址)
bin/sqlline.py