伪分布式 HBase整合phoenix 支持sql规范api

711 阅读3分钟

概述

  • 适用场景:
    适用于数据量级不是特别大,但未来可能比较大,需要扩展性。并且数据安全性要求不高,允许部分损失(单节点也不是那么容易挂)。
    伪分布式能够少占用资源的情况下,符合上面特性。
    在存储扩展上,可以通过添加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:
      export HDFS_NAMENODE_USER=root
      export HDFS_DATANODE_USER=root
      export HDFS_SECONDARYNAMENODE_USER=root
      
      yarn:
      export YARN_RESOURCEMANAGER_USER=root
      export YARN_NODEMANAGER_USER=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

最后就可以用标准sql操作hbase了