虚拟机centos7上的hadoop+hbase伪分布安装

简单了解下hadoop与hbase

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable”:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

环境准备

关闭防火墙和SELinux

systemctl stop firewalld.servimce            #停止firewall
systemctl disable firewalld.servimce        #禁止firewall开机启动
vim /etc/sysconfig/selinux
SELINUX=disabled

配置主机名及主机名绑定

vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node1
vim /etc/hosts
192.168.67.128  node1    #192.168.67.128虚拟机IP

用xshell连接虚拟机

SSH免密码登录

ssh-keygen

一直按Enter键

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

安装jdk(此处自己下载)

tar xvf jdk-8u162-linux-x64.tar.gz -C /usr/local/

配置环境

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_162
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile

Hadoop的安装部署

下载地址:http://hadoop.apache.org/releases.html

在这里,选择2.7.7版本

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
tar xvf hadoop-2.7.7.tar.gz -C /usr/local/
cd /usr/local/hadoop-2.7.7/
vim etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_162

配置HDFS
core-site.xml

mkdir /usr/local/hadoop-2.7.7/data/
vim etc/hadoop/core-site.xml

复制代码


    
        fs.defaultFS
        hdfs://localhost:9000
    

hdfs-site.xml

vim etc/hadoop/hdfs-site.xml

复制代码


    
        dfs.replication
        1
    

配置YARN

mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
vim etc/hadoop/mapred-site.xml

复制代码


    
        mapreduce.framework.name
        yarn
    

yarn-site.xml

vim etc/hadoop/yarn-site.xml

    
        yarn.nodemanager.aux-servimces
        mapreduce_shuffle
    

启动HDFS

初始化文件系统

bin/hdfs namenode -format


16/09/25 20:33:02 INFO common.Storage: Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted.

输出上述信息即代表文件系统初始化成功

启动NameNod和DataNode进程

sbin/start-dfs.sh

19/09/21 19:35:03 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes wh
ere applicableStarting namenodes on [hbase]
The authenticity of host ‘hbase (192.168.67.128)’ can’t be established.
RSA key fingerprint is 1a:12:f5:e3:5d:e1:2c:5c:8c:56:52:ba:42:1c:ac:ba.
Are you sure you want to continue connecting (yes/no)? yes
hbase: Warning: Permanently added ‘hbase’ (RSA) to the list of known hosts.
hbase: starting namenode, logging to /usr/local/hadoop-2.7.7/logs/hadoop-root-namenode-hbase.out
The authenticity of host ‘localhost (::1)’ can’t be established.
RSA key fingerprint is 1a:12:f5:e3:5d:e1:2c:5c:8c:56:52:ba:42:1c:ac:ba.
Are you sure you want to continue connecting (yes/no)? yes
localhost: Warning: Permanently added ‘localhost’ (RSA) to the list of known hosts.
localhost: starting datanode, logging to /usr/local/hadoop-2.7.7/logs/hadoop-root-datanode-hbase.out
Starting secondary namenodes [0.0.0.0]
The authenticity of host ‘0.0.0.0 (0.0.0.0)’ can’t be established.
RSA key fingerprint is 1a:12:f5:e3:5d:e1:2c:5c:8c:56:52:ba:42:1c:ac:ba.
Are you sure you want to continue connecting (yes/no)? yes
0.0.0.0: Warning: Permanently added ‘0.0.0.0’ (RSA) to the list of known hosts.
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop-2.7.7/logs/hadoop-root-secondarynamenode-hbase.out
19/09/21 19:35:32 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes wh
ere applicable

启动YARN

sbin/start-yarn.sh 

starting yarn daemons
starting resourcemanager, logging to /usr/local/hadoop-2.7.7/logs/yarn-root-resourcemanager-hbase.out
localhost: starting nodemanager, logging to /usr/local/hadoop-2.7.7/logs/yarn-root-nodemanager-hbase.out

通过jps查看各进程是否启动成功

jps

2421 NodeManager
2339 ResourceManager
1924 NameNode
2029 DataNode
2170 SecondaryNameNode
2721 Jps

也可通过访问http://192.168.67.128:50070/查看hdfs是否启动成功

Hbase的安装部署

下载地址:http://mirror.bit.edu.cn/apache/hbase/1.2.6/hbase-1.2.6-bin.tar.gz

在这里,下载的是1.2.6版本

关于hbase和hadoop的版本对应信息,可参考官档的说明

http://hbase.apache.org/book/configuration.html#basic.prerequisites

wget http://mirror.bit.edu.cn/apache/hbase/1.2.6/hbase-1.2.6-bin.tar.gz
tar xvf hbase-1.2.6-bin.tar.gz -C /usr/local/
cd /usr/local/hbase-1.2.6/

hbase-env.sh

vim conf/hbase-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_162  #我的JDK的位置
export HBASE_MANAGES_ZK=true

配置Hbase

mkdir /usr/local/hbase-1.2.6/data

hbase-site.xml

vim conf/hbase-site.xml 

复制代码


    
        hbase.rootdir
        hdfs://localhost:9000/hbase
        此参数指定了HRegion服务器的位置,即数据存放位置
    
    
		hbase.zookeeper.property.dataDir
		/usr/local/hbase-1.2.6/data/zookeeper
    
    
        hbase.cluster.distributed
        true
    

refionservers

vim conf/regionservers 
192.168.67.128

启动Hbase

bin/hbase-daemon.sh start zookeeper

starting zookeeper, logging to /usr/local/hbase-1.2.6/bin/…/logs/hbase-root-zookeeper-hbase.out

bin/hbase-daemon.sh start master

starting master, logging to /usr/local/hbase-1.2.6/bin/…/logs/hbase-root-master-hbase.out

bin/hbase-daemon.sh start regionserver

starting regionserver, logging to /usr/local/hbase-1.2.6/bin/…/logs/hbase-root-regionserver-hbase.out

通过jps查看新增的java进程

jps

2421 NodeManager
2975 HQuorumPeer
3302 HRegionServer
3051 HMaster
2339 ResourceManager
1924 NameNode
2029 DataNode
2170 SecondaryNameNode
3332 Jps

可以看出,新增了HQuorumPeerHRegionServerHMaster三个进程。
通过http://192.168.67.128:16030访问Hbase的web页面
至此,Hbase的伪分布式集群搭建完毕~

最后为了快速启动配置环境

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_162
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/usr/local/hadoop-2.7.7
export PATH=$HADOOP_HOME/sbin:$PATH
export HBASE_HOME=/usr/local/hbase-1.2.6
export PATH=$HBASE_HOME/bin:$PATH
source /etc/profile

快速开启hadoop与hbase

start-all.sh
start-hbase.sh
jps

快速关闭hadoop与hbase

stop-hbase.sh
stop-all.sh

HMaster启动问题

  1. 问题描述
    在启动 Hbase 后,发现没有 Hmaster 进程的现象,并且导致 Hbase shell 启动后操作报 Can’t get master address from ZooKeeper; znode data == null 的错误以及停止 Hbase 时出现 stopping hbasecat: /tmp/hbase-xxxxx-master.pid: 没有那个文件或目录 的错误
  2. 问题分析与解决办法
    1.没有找到 /tmp/hbase-xxxxx-master.pid 文件

hbase 默认注释掉 HBASE_PID_DIR,而 hbase 默认把 pid 文件放在 /tmp 临时目录下, 这个目录可能会被系统删除等原因无法找到, 解决办法是把 hbase/conf/hbase-env.sh 中的 HBASE_PID_DIR 属性打开修改为非临时路径, 例如 opt/module/hbase/pids, 然后重启 zookeeper 和 Hbase 即可
1、解决办法:在hbase目录下conf文件夹下 hbase-env.sh中修改pid文件的存放路径,看注释,hbase默认注释掉HBASE_PID_DIR,而hbase默认把pid文件放在/tmp目录下,Ubuntu 默认重启自动删除/tmp文件夹中的目录 。删除之后hbase无法找到,在配置中把目录改成不会被删除的目录就行
The directory where pid files are stored. /tmp by default.
hbase-env.sh

vim conf/hbase-env.sh
export HBASE_PID_DIR=/var/hadoop/pids

实测有效其他没遇到问题参加他人的解决方式

2、如果关闭hbase还不行,还是出现找不到 hbase-root-master ,可以去配置的目录下看看是否有 hbase-shan-master.pid
jps看看是否 HMaster启动 ,如果没启动看看 hbase-site.xml中的hbase.rootdir 的端口号,hostname是否配置正确 ,只有正确的启动HMaster 才会生成pid,

[shan@hadoop102 hbase]$ jps -l
36912 org.apache.hadoop.hbase.master.HMaster

2.zookeeper /hbase 节点的历史数据不匹配

需要删除 zookeeper 节点上的 hbase 数据, 以及 zookeeper 根目录下的 hbase 数据目录

zkCli.sh -server master:2181
ls /
[/hbase , /zookeeper]
rmr /hbase

删除 zookeeper 根目录下的 hbase 数据目录下除了 myid 以外的文件, 是 conf/hbase-site.xml 中的 hbase.zookeeper.property.dataDir 属性值

重启 zookeeper 和 Hbase 即可

3.时钟不同步, 超过了默认的30秒限制或自己设定的时间

4.zookeeper 出问题了

5.hdfs 和 hbase 配置的端口不匹配
HBase/conf/core-site.xml hdfs://master 要与hbase-site.xml 文件中 hbase-rootdir hdfs://master:9000/hbase 相同

你可能感兴趣的:(hadoop,hbase,centos7)