ubuntu16.04 server hbase1.2.6离线安装
今天在ubuntu服务器上尝试安装hbase,参考了网上的教程,遇到了各种坑,所以写个博文记录以下,避免以后采坑。
首先给出参考的几篇文章链接:
Ubuntu16.04 下 hadoop的安装与配置(伪分布式环境)
Hadoop2.7.1 安装提示SHUTDOWN_MSG: Shutting down NameNode at java.net.UnknownHostException
Hadoop之Unable to load native-hadoop library问题解决
用Python3.6操作HBase之HBase-Thrift
在hbase的官网下载1.2.6版本,https://archive.apache.org/dist/hbase/1.2.6/
在1.2.6对应的文档中,我们发现需要安装jdk、zookeeper以及hadoop环境,http://hbase.apache.org/1.2/book.html
hbase1.2.6可使用的jdk是1.7和1.8,由于1.7太老了,这里以安装下载jdk1.8为例
hbase1.2.6可使用的hadoop版本是2.7.1+,这里以安装下载2.7.6为例
创建hadoop用户
sudo useradd -m hadoop -s /bin/bash #创建hadoop用户,并使用/bin/bash作为shell
sudo passwd hadoop #为hadoop用户设置密码,之后需要连续输入两次密码
sudo adduser hadoop sudo #为hadoop用户增加管理员权限
su - hadoop #切换当前用户为用户hadoop,输入刚设置的密码
接着安装ssh,设置ssh无密码登录:
sudo apt-get install openssh-server #安装SSH server
ssh localhost #登陆SSH,第一次登陆输入yes
exit #退出登录的ssh localhost
cd ~/.ssh/ #如果没法进入该目录,执行一次ssh localhost
ssh-keygen -t rsa
输入完 $ ssh-keygen -t rsa 语句以后,需要连续敲击三次回车。其中,第一次回车是让KEY存于默认位置,以方便后续的命令输入。第二次和第三次是确定passphrase,相关性不大。敲完回车后会出现一个图形秘钥。接着输入以下指令:
cat ./id_rsa.pub >> ./authorized_keys #加入授权
ssh localhost #此时已不需密码即可登录localhost,并可见下图。如果失败则可以搜索SSH免密码登录来寻求答案
登录成功后通过exit指令退出localhost,回到hadoop
安装jdk1.8
官网下载jdk1.8,https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载名为 jdk-8u221-linux-x64.tar.gz
下载后将文件上传至ubuntu服务器,将jdk1.8文件进行解压:
sudo tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/lib
接着打开profile修改环境变量:
sudo vim /etc/profile
在文件的末尾追加以下信息:
#set oracle jdk environment
export JAVA_HOME=/usr/lib/jdk1.8.0_221 # 目录要换成自己解压的jdk目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
使环境变量生效:
source /etc/profile
设置系统默认jdk版本(记得将后面的jdk目录改成自己的jdk解压目录):
sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk1.8.0_221/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jdk1.8.0_221/bin/javac 300
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jdk1.8.0_221/bin/jar 300
sudo update-alternatives --install /usr/bin/javah javah /usr/lib/jdk1.8.0_221/bin/javah 300
sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jdk1.8.0_221/bin/javap 300
接着执行:
sudo update-alternatives --config java
如果是第一次安装jdk会有如下提示:
There is only one alternative in link group java (providing /usr/bin/java):
/usr/lib/jdk1.8.0_221/bin/java
查看jdk版本:
java -version
如果终端打印出 java version"1.8.0_221" 信息,说明安装成功。
安装zookeeper
下载zookeeper的链接:http://mirror.bit.edu.cn/apache/zookeeper/
本文下载的是版本是3.4.14,下载后上传到服务器上:
sudo tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local # 解压文件
cd /usr/local # 进入解压目录
sudo mv zookeeper-3.4.14/ zookeeper # 重命名为zookeeper
sudo chown -R hadoop ./zookeeper # 更改权限,hadoop是我们创建的主机名
切换到zookeeper的conf文件下,备份zoo_sample.cfg,并打开编辑复制的zoo.cfg文件
cp zoo_sample.cfg zoo.cfg //copy一份到当前目录下,并命名为zoo.cfg
vim zoo.cfg
编辑下面两项:
dataDir=/etc/zookeeper
dataLogDir=/etc/zookeeper/log
然后创建/etc/zookeeper以及/etc/zookeeper/log文件夹,并修改权限:
cd /etc/
sudo mkdir zookeeper # 创建文件夹
sudo mldir zookeeper/log
sudo chown -R hadoop zookeeper/ # 修改文件所有者
sudo chmod 777 zookeeper/ # 修改读写权限
接着添加环境变量:
sudo vim /etc/profile
在文件末尾加入:
export ZOOKEEPER=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER/bin
刷新环境变量:
source /etc/profile
启动zookeeper:
zkServer.sh start # 启动
zkServer.sh status # 查看运行状态
启动客户端:
zkCli.sh # 启动客户端
quit # 退出客户端
安装hadoop
下载地址:http://mirrors.hust.edu.cn/apache/hadoop/common/
本文下载的hadoop版本为2.7.6,下载完后将文件上传至服务器。
通过以下指令进行解压:
sudo tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local # 解压文件
cd /usr/local # 进入解压目录
sudo mv hadoop-2.7.6 hadoop # 重命名为hadoop
sudo chown -R hadoop ./hadoop # 更改权限,hadoop是我们创建的主机名
打开profile添加环境变量:
sudo vim etc/profile
在文件的末尾加上以下内容,HADOOP_HOME是你自己解压的hasoop目录位置:
#set hadoop environment
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
更新环境变量:
source /etc/profile # 更新环境变量
hadoop version # 查看hadoop版本信息
接下来进行伪分布式配置:
首先进入/usr/local/hadoop/etc/hadoop/目录,打开hadoop-env.sh文件:
cd /usr/local/hadoop/etc/hadoop/
sudo vim hadoop-env.sh
修改JAVA_HOME:
export JAVA_HOME=/usr/lib/jdk1.8.0_221
接下来需要修改两个配置文件 core-site.xml 和 hdfs-site.xml:
用vim打开core-site.xml文件,添加如下信息:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
接着打开hdfs-site.xml,添加如下信息:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(可参考官方教程),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
接下来检查hostname是否存在映射(若不检查,可能在hadoop格式化时报错:SHUTDOWN_MSG: Shutting down NameNode at java.net.UnknownHostException: xxx: xxx: Name or service not known) ,通过以下指令查看本机hostname:
hostname
接下来打开 /etc/hosts 文件看有没有映射信息,我的服务器hostname是tensorflowob则对应以下信息:
127.0.0.1 localhost tensoflowob # 查看该行是否存在,若不存在添加该映射信息
接着重启网络:
/etc/init.d/networking restart
最后测试hadoop:
cd /usr/local/hadoop # 打开hadoop目录
./bin/hdfs namenode -format # 格式化名称节点
./sbin/start-dfs.sh # 启动hadoop
jps # 查看启动结果
正常启动后通过jps指令,应该会显示以下四个信息:
4821 Jps
4459 DataNode
4348 NameNode
4622 SecondaryNameNode
关闭hadoop服务:
./sbin/stop-dfs.sh
如果在启动过程中出现“The authenticity of host ‘0.0.0.0 (0.0.0.0)’ can’t be established.”类似错误,登录root管理员,输入指令ufw disable,关闭防火墙,重启下系统即可。
安装hbase
我们安装好jdk和hadoop环境后,开始安装hbase,hbase1.2.6的下载链接:https://archive.apache.org/dist/hbase/1.2.6/
下载完成后上传至服务器,并进行解压:
sudo tar -zxvf hbase-1.2.6-bin.tar.gz -C /usr/local
cd /usr/local
sudo mv hbase-1.2.6/ hbase # 修改文件名
接着配置环境变量:
sudo vim /etc/profile
在文件末尾加上:
# set hbase environment
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin
更新环境变量:
source /etc/profile # 更新环境变量
hbase version # 查看hbase版本信息
修改hbase的配置文件(这里需要修改4个文件):
进入到hbase的安装目录下的conf配置文件夹
1)首先修改hbase-env.sh文件:
cd /usr/local/hbase/conf
sudo vim hbase-env.sh
修改其中的:
export JAVA_HOME=/usr/lib/jdk1.8.0_221
export HBASE_MANAGES_ZK=false # 使用本机自带的zookeeper
2)接着修改hbase-site.xml文件:
<configuration>
<property>
<!-- 指定hbase在HDFS上的存储路径 -->
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/myhbase</value>
</property>
<property>
<!-- 指定hbase是分布式的 -->
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<!-- 指定zk的地址,多个用','隔开 -->
<name>hbase.zookeeper.quorum</name>
<value>tensorflowob</value>
</property>
</configuration>
3)修改regionservers文件,配置从节点的主机名
sudo vim regionservers
清空里面的信息,将hadoop的节点信息添加进去即可(注意不要有多余的空格和回车)
tensoflowob
4)新建一个文件backup-masters配置hmaster的备份节点:
sudo vim backup-masters
这里将备份节点备份在hadoop上(可设置多个节点),在backup-masters中写入:
tensorflowob
接着,我们将hadoop的配置文件hdfs-site.xml core-site.xml放到hbase的conf下(当前目录在hbase的conf下):
sudo cp /usr/local/hadoop/etc/hadoop/core-site.xml ./
sudo cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml ./
全部修改完后开始启动hbase,注意:启动hbase之前需要提前启动zookeeper和hadoop:
zkServer.sh start # 启动zookeeper
zkServer.sh status # 查看运行状态
cd /usr/local/hadoop # 打开hadoop目录
./bin/hdfs namenode -format # 格式化名称节点,若之前格式化过请忽略此步骤
./sbin/start-dfs.sh # 启动hadoop
jps # 查看启动结果
cd /usr/local/hbase/ # 进入hbase目录
./bin/start-hbase.sh # 开启hbase
jps # 查看启动结果
# 如果要进入hbase的shell窗口,通过以下指令
cd /usr/local/hbase/bin # 进入hbase的bin目录
./hbase shell # 启动hbase shell
quit # 退出shell窗口
在hadoop启动过程后,通过jps指令可以看到启动了:DataNode,NameNode,SecondaryNameNode,Jps,QuorumPeerMain(这个是zookeeper启动的)五个进程。
在hbase启动过程后,通过jps指令查看,除了上面5个进程外还有HMaster和HRegionServer两个进程。
启动完后我们通过浏览器访问 10.2.14.137:16010 就能够进入hbase的管理页面了,其中10.2.14.137是服务器的地址,需要改成你自己的服务器地址,端口号16010是默认的,通过浏览器访问 10.2.14.137:50070 就能够进入hadoop的管理页面了,同样将端口号前的地址改成你自己的服务器地址。
安装thrift模块
hbase是用java语言写的,所以原生支持java,但如果想通过其他语言调用hbase数据库就需要安装thrift模块,本文需要使用python3去调用hbase的thrift模块,所以要在服务器端安装thrift模块,本文安装的是0.11.0版本。
thrift0.11.0版本下载链接:http://mirrors.hust.edu.cn/apache/thrift/0.11.0/thrift-0.11.0.tar.gz
接着安装所需要的依赖包:
apt-get install automake bison flex g++ git libboost1.55 libevent-dev libssl-dev libtool make pkg-config
解压编译安装:
sudo tar -zxvf thrift-0.11.0.tar.gz /usr/local/ # 解压
cd /usr/local
sudo mv thrift-0.11.0/ thrift # 更改文件名称
sudo chmod 777 -R thrift # 赋予读写权限
cd thrift
./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
sudo make
sudo make install
安装完成后进入到hbase的bin目录下启动thrift接口:
cd /usr/local/hbase/bin
./hbase-daemon.sh start thrift
开启thrift接口后可通过服务器的9090端口去访问hbase数据库。
相关文章
- SQL Server 优化器内幕
- Windows Server中企业证书服务的安装
- [SQL Server]无法创建 SSIS 运行时对象,请验证 DTS.dll 是否可用及是否已注册
- sql server 全文检索 使用
- 在虚拟机安装 Linux Server (ubuntu-14.04-server)
- CentOS6.X下安装配置独立SVN服务器Subversion server
- mysql中/*!40000 DROP DATABASE IF EXISTS `top_server`*/;这中注释有什么作用?
- nodejs socket server 强制关闭客户端连接
- Sql Server起今为止最全的【日期函数大全】!(超经典,全部为示例)
- Speed up your Internet browsing on Linux with a DNS Cache server
- SSO之安装CAS Server
- HTTP 错误 500.21 - Internal Server Error 处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- ubuntu 18.04 安装 Redis-server
- sql server 小技巧(3) SQL Server 2012 数据库完整导出到SQL Azure (包括数据)
- Ubuntu Server无桌面无显示器情况下虚拟屏幕xvfb的安装及设置—ubuntu18.04server服务器系统下为python安装虚拟显示器 (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)
- 所在单位近日购入Dell poweredge T640型号服务器,安装Ubuntu18.04.5 server操作系统,服务器万兆网卡,网线连接到千兆交换机上,不能识别网卡——解决方案
- T-SQL查询高级--理解SQL SERVER中非聚集索引的覆盖,连接,交叉和过滤
- Kafka报错——log问题导致ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.
- JIRA /mnt/server/atlassian-jira-6.3.6-standalone/bin/start-jira.sh
- #Windows server 2019将辅助域控升级为主域控
- 【等待优化】sql server pageIoLatch(Latch等待)概念及解决思路
- (4.37)sql server中的系统函数
- 【基本优化实践】【1.6】在sql server修改且移动数据库文件位置
- 【转】sql server数据收集和监控
- 【监控笔记】【2.4】SQL Server中的 Ring Buffer 诊断各种系统资源压力情况
- sql server 驱动程序在 DeviceRaidPort0 上检测到控制器错误。
- (4.5)sql server授权/权限操作/查看权限,权限控制
- sql server递归日期
- SQL Server 外键 使用与否
- Tomcat启动失败错误解决Could not publish server configuration for Tomcat v7.0 Server at localhost