当前位置:   article > 正文

基于CentOS 7搭建Hadoop Hbase伪分布式_centos 安装 hbase 伪分布式

centos 安装 hbase 伪分布式

基于CentOS 7搭建Hadoop伪分布式

**注意!!!!!!!!我的虚拟机用户名是hadoop 以我的为标准就不会出错 **
本文是基于CentOS 7 , jdk-8 和Hadoop3.2.2 Hbase2.3.2环境搭建,准备好CentOS7 64位的镜像,然后在VMware上安装虚拟机
在这里插入图片描述

一、hadoop安装部署

1、准备工作

修改静态IP

vi /etc/sysconfig/network-scripts/ifcfg-ens33

把 BOOTPROTO = “dhcp” 改成 BOOTPROTO = “static” 表示静态获取,然后把 UUID 注释掉,把 ONBOOT 改为 yes,表示开机自动静态获取,然后在最后追加比如下面的配置:

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
#UUID="e59bb0ad-2918-4de6-93fa-46bd94c0a474"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.134.151  #自己的ip地址
NETMASK=255.255.255.0 #固定
GATEWAY=192.168.134.2 ##自己的ip地址后面是2
DNS1=8.8.8.8  #固定


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

然后重启网络,centos7的网卡重启方法:systemctl restart network

关闭防火墙

查看防火墙状态: systemctl status firewalld.service

执行关闭命令: systemctl stop firewalld.service

执行开机禁用防火墙自启命令 : systemctl disable firewalld.service

配置模板虚拟机主机名称映射hosts文件
vim /etc/hosts
  • 1

在末尾添加内容:

192.168.10.100 xxxx #xxxx是自己的设置的名字
  • 1

重启虚拟机

reboot
  • 1

在Windows中打开C:\Windows\System32\drivers\etc路径,在hosts文件中添加如下内容:

192.168.10.100 ljc100  #和linux保持一直 
  • 1
在/opt/下创建2个目录,并修改所有者和所在组
mkdir module/ software/
chown 自己的用户名:自己的用户名 module/ software/
  • 1
  • 2
卸载虚拟机自带JDK
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
  • 1

配置免密登录

Hadoop 中的NameNode和DataNode是通过SSH (Secure Shell) 进行通信的,所以
需要先完成 SSH免密码登录。具体操作步骤如下:

ssh-keygen -t rsa
 ssh-copy-id localhost
  • 1
  • 2

执行完上面两条命令后,就可以实现免密码登录到本机。验证方式如下:

[hadoop@hadoop ~]S ssh hadoop
  • 1

2.JDK、Hadoop安装

解压JDK Hadoop 并指定目录 和jdk Hadoop环境变量
解压
cd /opt/software/
tar -zxvf jdk-8u321-linux-x64.tar.gz -C /opt/module/
tar -zxvf hadoop-3.2.2.tar.gz -C /opt/module/

配置
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_321
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.2.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

使修改后的文件生效

source /etc/profile
  • 1

测试Hadoop jdk是否安装成功

 hadoop version
 jdk -version
  • 1
  • 2
配置hadoop文件

========注意下面这些文件在 /etc/hadoop/

hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_321
  • 1

**core-site.xml **

  <property>
    <!-- 配置NameNode的主机名和端口号 -->
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop:8020</value>   <!-- hadoop是我的linux的用户名 已经映射了ip地址 切换自己的用户名就行 -->
  </property>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

hdfs-site.xml(确保下面路径中的文件夹是存在的,没有的话先创建)

  <property>
  <!-- 设置HDFS元数据文件存放路径 -->
    <name>dfs.namenode.name.dir</name>
    <value>/opt/hd_space/hdfs/name</value>
  </property>
  
  <property>
  <!-- 设置HDFS数据文件存放路径 -->
    <name>dfs.datanode.data.dir</name>
    <value>/opt/hd_space/hdfs/data</value>
  </property>

  <property>
  <!-- 设置HDFS数据文件副本数 -->
    <name>dfs.replication</name>
    <value>1</value>
  </property>

  <property>
  <!-- 设置其他用户执行操作时会提醒没有权限 -->
    <name>dfs.permissions</name>
    <value>false</value>
  </property>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
创建方式
mkdir -p /opt/hd_space/hdfs/data
mkdir -p /opt/hd_space/hdfs/name

#分配权限
chown 自己的用户名:自己的用户名 module/ hd_space/
  • 1
  • 2
  • 3
  • 4
  • 5

mapred-site.xml

  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  • 1
  • 2
  • 3
  • 4

yarn-site.xml

  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>

  • 1
  • 2
  • 3
  • 4
  • 5

slaves(没有这个文件自己加,内容是自己的用户名我的是hadoop)

hadoop
  • 1
格式化 HDFS

Hadoop配置完成后,第一次使用Hadoop平台需要先格式化文件系统。

进入到Hadoop安装目录下的bin目录里,执行:./hdfs namenode -format

此方法需要用root用户

bin目录的权限如果是root,则分配权限给hadoop

chown 自己的用户名:自己的用户名 /opt/module/hadoop-3.2.2/bin
  • 1
 cd /opt/hadoop/bin
 ./hdfs namenode -format
  • 1
  • 2
启动并验证

进入到Hadoop安装目录下的sbin目录里,执行:start-all.sh

cd /opt/Hadoop/sbin
start-all.sh
  • 1
  • 2

Hadoop启动成功后,通常使用以下几种方式进行验证。

(1) 通过 jps 命令查看启动的进程,命令执行后,如果可以看到 NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager 进程,证明 Hadoop平台已经启动成功。

(2) 通过webui的方式验证

验证 HDFS 启动成功的网址为:http://hadoop:9870 # hadoop为你的ip地址
验证 YARN 启动成功的网址为:http://hadoop:8088 # hadoop为你的ip地址
如果两个网址都能正确打开,证明Hadoop平台已经启动成功

二、HBase 伪分布式环境搭建

解压并配置环境变量

HBase安装包解压完成并配置好环境变量

export HBASE_HOME=/opt/hbase
export PATH=.: H B A S E H O M E / b i n : HBASE_HOME/bin: HBASEHOME/bin:PATH

解压
cd /opt/software/
tar -zxvf jdk-8u321-linux-x64.tar.gz -C /opt/module/
tar -zxvf hadoop-3.2.2.tar.gz -C /opt/module/

配置
#HBASE_HOME
export HBASE_HOME=/opt/module/hbase-2.3.2
export PATH=$PATH:$HBASE_HOME/bin

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

查看HBase版本,判断是否安装成功

执行 source /etc/profile后生效,然后去bin目录输入 hbase version

img

配置hbase-env.sh

自己hbase目录下的conf

vim /hbase-2.3.2/conf/ hbase-env.sh	
  • 1

配置JAVA_HOMEHBASE_CLASSPATHHBASE_MANAGES_ZK

export JAVA_HOME=/opt/module/jdk1.8.0_321
export HBASE_CLASSPATH=/opt/module/hbase-2.3.2/conf
export HBASE_MANAGES_ZK=true
  • 1
  • 2
  • 3
配置hbase-site.xml

用vi打开并编辑hbase-site.xml,命令如下:

vim /hbase-2.3.2/conf/hbase-site.xml

<configuration>
   <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
    <property>
        <name>hbase.master</name>
        <value>hadoop:60000</value>
    </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop</value>
   </property>
  <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>2181</value>
    </property>
   <property>
    <name>hbase.rootdir</name>
    <value>hdfs://hadoop:8020/hbase</value>
  </property>
  <property>
    <name>hbase.tmp.dir</name>
    <value>./tmp</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>

</configuration>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
测试运行HBase

第一步:首先登陆ssh,之前设置了无密码登陆,因此这里不需要密码;

第二步:再切换目录至/opt/module/hadoop-3.2.2

第三步:启动hadoop(如果已经启动hadoop请跳过此步骤)。

ssh 自己的hostname
cd /opt/module/hadoop-3.2.2/sbin/ start-all.sh
  • 1
  • 2

切换目录至/opt/module/hbase-2.3.2/,启动HBase:

cd /opt/module/hbase-2.3.2/
bin/start-hbase.sh
  • 1
  • 2
验证

HBase启动完成以后,通常可以使用以下几种方式进行验证。
(1)通过jps命令查看启动的进程。
如果看到启动的进程包括Hadoop中的NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager 进程,同时多了HMaster、HRegionServer两个进程,说明HBase已经启动成功。

Bug 1

img

错误如下:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-reload4j-1.7.35.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hbase/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
  • 1
  • 2
  • 3
  • 4

说明这是jar包冲突,分别为:

SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-reload4j-1.7.35.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hbase/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  • 1
  • 2

移除其中一个jar包即可:

cd /usr/local/hadoop/share/hadoop/common/lib
rm slf4j-reload4j-1.7.35.jar
  • 1
  • 2
Bug 2

img

错误如下:

/usr/local/hadoop/libexec/hadoop-functions.sh: 行 2366: HADOOP_ORG.APACHE.HADOOP.HBASE.UTIL.GETJAVAPROPERTY_USER:无效的变量名
/usr/local/hadoop/libexec/hadoop-functions.sh: 行 2461: HADOOP_ORG.APACHE.HADOOP.HBASE.UTIL.GETJAVAPROPERTY_OPTS:无效的变量名
  • 1
  • 2

打开 ~/hbase-2.3.2/conf (目录根据自己的目录进行修改)目录下的hbase-env.sh文件中进行编辑: 解除注释!

img

Bug 3

错误如下:

2022-10-12 16:28:02,575 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
  • 1

解决方法:

进入/opt/module/hadoop-3.2.2/log4j.properties文件中,在文件末尾添加指令:

sudo vi log4j.properties

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
  • 1
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号