系统:CentOS Linux release 7.6.1810 (Core)
IP:10.255.175.84
Jdk:1.8.0_25
Hadoop:2.7.5
Hbase:1.2.6
Zookeeper: zookeeper-3.4.10
Phoenix: phoenix-4.14.1-HBase-1.2-bin
Thrift: thrift-0.11.0
JDK、Hadoop、HBase版本兼容性(X:不兼容;NT:未测试;Y:兼容):
下载jdk1.8.0_25
解压 tar -zxvf jdk*
配置环境变量:
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_25
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export HBASE_HOME=/usr/local/hbase-1.2.6
export PATH=${HBASE_HOME}/bin:$PATH
export HADOOP_HOME=/usr/local/hadoop-2.7.5
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH
重新加载配置文件使之生效$ source /etc/profile
$ vi /etc/hosts
添加内容如下:
10.255.65.4 master
集群和伪分布式需要配置
关闭: systemctl stop firewalld
开机禁用 : systemctl disable firewalld
设置"SELINUX=disabled"
下载解压zookeeper文件
zookeeper/conf目录下zoo_sample.cfg复制重命名为zoo.cfg
vi zoo.cfg
dataDir=指定目录(默认存储在tmp)
maxSessionTimeout=200000
minSessionTimeout=20000
Zookeeper的bin目录下zkServer.sh start
成功标识:
Jps查看进程,出现QuorumpeerMain
问题1:关闭防火墙。在hadoop集群环境(linux系统)中最好关闭防火墙,不然会出现很多问题,例如namenode找不到datanode等。如果不关闭防火墙,客户端使用API操作HDFS以及ZooKeeper,可能就会出现下面常见的两种异常:
· 使用API操作HDFS时会出现异常:java.net.NoRouteToHostException: No route to host
· 使用API操作ZK时会出现异常:
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for xxxx
配置文件位置:****/hadoop/etc/Hadoop
添加JDK路径:export JAVA_HOME=
此文件是mapred-site.xml.template复制出来的
master
进入master的~/hadoop目录,执行以下操作:
格式化文件系统:
$ bin/hadoop namenode -format
第一次启动前操作,以后无需操作!!!
然后启动hadoop:
$ sbin/start-all.sh
验证:通过jps能看到NodeManager,NameNode,SecondaryNameNode,ResourceManager,DataNode这几个进程。
下载解压hbase
conf下配置:
export JAVA_HOME=/usr/local/jdk1.8.0_25
Export HBASE_CLASSPATH=/usr/local/hadoop/etc/hadoop/
export HBASE_MANAGES_ZK=false
在 regionservers 文件中添加slave列表
master
Phoenix 下载地址:http://phoenix.apache.org/download.html 在里面找到匹配自己hbase版本的Phoenix
tar -zxvf apache-phoenix-4.14.1-HBase-1.2-bin.tar.gz
进入apache-phoenix-4.14.1-HBase-1.2-bin目录:把用黑框圈出的三个jar包复制到 hbase 目录的 lib 目录下
将 hbase 中的配置文件 hbase-site.xml 拷贝到 Phoenix 的 bin 目录下,覆盖原有的配置文件,或者删除Phoenix 的 bin 目录下原有的 hbase-site.xml
安装Thrift,因为其他语言调用HBase时,需要通过Thrift进行连接
thrift下载地址:http://mirror.bit.edu.cn/apache/thrift/0.11.0/
sudo apt-get install automake bison flex g++ git libboost1.55
libevent-dev libssl-dev libtool make pkg-config
不然在configure时可能会报错(configure: error)
下载源码,解压后进行编译安装。
tar zxf thrift-0.11.0.tar.gz
cd thrift-0.11.0/
./configure --with-cpp --with-boost --with-python --without-csharp --with-java --without-erlang
--without-perl --with-php --without-php_extension --without-ruby --without-haskell --without-go
make
sudo make install
bin/hbase-daemon.sh start thrift
首先pip install thrift
然后找到我们之前下载的hbase-1.2.6-src.tar.gz文件(http://mirror.bit.edu.cn/apache/hbase/stable/)
解压然后find . -name Hbase.thrift,找到Hbase.thrift
进入文件所在目录然后thrift --gen py Hbase.thrift,会看到多出一个文件gen-py,打开文件夹,里边有一个hbase文件夹。然后把hbase文件移动到python的第三方库的安装位置。或者程序所在目录。入文件所在目录然后thrift --gen py Hbase.thrift,会看到多出一个文件gen-py,打开文件夹,里边有一个hbase文件夹。然后把hbase文件移动到python的第三方库的安装位置。或者程序所在目录。
~/zookeeper/bin/zkServer.sh start
之前已经格式化过文件系统,只有第一次需要格式化
~/hadoop/sbin/start-all.sh
~/hbase/bin/start-base.sh
bin/hbase-daemon.sh start thrift
【问题一】Master is initializing
此问题有两种常见情况:
1. 服务器时间未同步导致。
date -s "20091112 18:30:50" &&hwclock --systohc
2. regionservers中未配置master。
重启即可解决。
【问题二】报错Hbase:namespace
服务一切正常,创建表的时候报错,更换表名正常。
Zookeeper中名称空间管理出错。
$sh zkCli.sh
ls /
输入rmr /hbase删除hbase管理即可。
【问题三】master.HMasterCommandLine: Master exiting Cannot assign requested address
vim /etc/hosts
添加本机ip配置localhost即可
【问题四】hadoop进入安全模式
退出安全模式:
./hdfs dfsadmin -safemode leave
无法退出:
检查磁盘占用
数据倾斜:
./start-balancer.sh