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
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
下载地址: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是否启动成功
下载地址: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
可以看出,新增了HQuorumPeer,HRegionServer和HMaster三个进程。
通过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启动问题
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 相同