HBase环境搭建和使用(使用了两台Centos7的虚拟机)
一.检查、安装java,设置JAVA_HOME
1.下载并解压JDK
下载地址:链接:https://pan.baidu.com/s/1OAkGjw5g2r5zkUu7h4Zqow
提取码:66jh
新建/usr/java目录
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /usr/java/
2. 配置环境变量
sudo vim ~/.bashrc
在最后加上下列内容(一定注意环境变量后面不要加空格,否则容易出问题,jdk版本号看自己的版本,如果用网盘里的就不用更改)
export JAVA_HOME=/usr/java/jdk1.8.0_161
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
下面命令使环境变量生效
source ~/.bashrc
sudo vim /etc/profile
插入下列内容(再次强调jdk的版本号)
export JAVA_HOME=/usr/java/jdk1.8.0_161
export JAVA_BIN=$JAVA_HOME/bin
export JAVA_LIB=$JAVA_HOME/lib
export CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
sudo vim /etc/environment
追加
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/java/jdk1.8.0_161/lib:/usr/java/jdk1.8.0_161"
下面命令使配置生效
source /etc/environment
验证java环境是否配置成功
java -version
二.配置SSH免密登录
1.生成ssh-key(两台虚拟机都要生成)
ssh-keygen -t rsa -P ""
2.实现免密登录
主节点要给从节点发一份同时也要给自己发一份,因为只有两台机器,主节点也充当了一个从节点
ssh-copy-id -i ~/.ssh/id_rsa.pub username@192.168.x.xxx
三.下载zookeeper、Hadoop、hbase
1.zookeeper
https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
2.Hadoop
https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
3.hbase
https://www.apache.org/dyn/closer.lua/hbase/2.2.4/hbase-2.2.4-bin.tar.gz
四.解压、配置zookeeper,启动,jps看状态
1.解压
tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz
2.配置
进入conf目录下,将zoo_sample.cfg复制一份重命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
配置 zoo.cfg
需要修改数据存放的目录,我是在zookeeper的安装目录下新建了一个data目录
配置文件中还需要加上各个节点的信息,如下:
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
然后需要在data目录下新建一个myid文件,里面写上自己的id号,与配置文件中的server.1、server.2、server.3相匹配
3.启动
进入bin目录
./zkServer.sh start
启动成功
五.解压、安装、配置hadoop,分发到其他节点,启动,jps看状态
1.解压
2.配置
进入hadoop安装目录
然后进入配置文件目录
cd etc/hadoop/
我们只需要用hadoop的hdfs所以只需要配置core-site.xml和hdfs-site.xml以及workers
配置core-site.xml
原来的文件configuration标签是空的,需要自己填
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-3.2.1/tmp</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181</value>
</property>
</configuration>
配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本个数,配置默认是3,应小于datanode机器数量</description>
</property>
</configuration>
配置workers
写上hadoop集群的主机名,一共两台虚拟机,主机名分别为master和slave1
3.分发
刚刚是在master上配置的hadoop,现在只需要将整个配置好的hadoop发送到slave1中即可,文件就不需要再进行配置
scp -r /opt/hadoop-3.2.1 root@slave1:/opt
4.启动
进入sbin目录
./start-dfs.sh
master节点的进程,新增了NameNode,DataNode,SecondaryNameNode
slave1节点的进程,新增了DataNode
六.解压、安装、配置hbase,分发到其他节点,启动,jps
1.解压
tar -zxvf hbase-2.2.4-bin.tar.gz
2.配置
进入安装目录下的conf目录
对hbase-site.xml进行配置
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property> <property>
<name>hbase.tmp.dir</name>
<value>/opt/hbase-2.2.4/tmp</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master:2181</value>
</property>
</configuration>
对regionservers进行配置
写入两个虚拟机的主机名
3.分发
容易使用scp命令将master中配置好的hbase发送到slave1中
scp -r /opt/hbase-2.2.4 root@slave1:/opt
4.启动
进入bin目录
启动hbase
./start-hbase.sh
此时master新增了进程HQuorumPeer,HMaster和HRegionServer
七.演示
进入hbase命令行
./hbase shell
查看集群的状态,一个主节点一个从节点,都是正常的
查看已经创建的表
查看表中的内容
下面在hbase创建该表
create 'Student','StuInfo','Grades'
插入数据
Student为表名,0001为行键,StuInfo:Name为列族和列的名称,中间用冒号隔开(列族名必须是已经创建的),Tom Green为该列的值,1为时间戳,如果不设置时间戳则系统会动插入当前时间为时间戳
put 'Student', '0001', 'StuInfo:Name', 'Tom Green', 1
put 'Student', '0001', 'StuInfo:Name', 'Tom Green', 1
put 'Student', '0001', 'StuInfo:Age', '18'
put 'Student', '0001', 'StuInfo:Sex', 'Male'
put 'Student', '0001', 'Grades:BigData', '80'
put 'Student', '0001', 'Grades:Computer', '90'
put 'Student', '0001', 'Grades:Math', '85'
将0001的其他信息写入Student表
查看Student表
筛选出0001的信息
筛选出0001的StuInfo列族中的信息
筛选出0001的StuInfo列族中Age列的值