基于CentOS 7搭建Hadoop 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  #固定


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

关闭防火墙

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

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

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

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

在末尾添加内容:

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

重启虚拟机

reboot

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

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

配置免密登录

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

ssh-keygen -t rsa
 ssh-copy-id localhost

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

[hadoop@hadoop ~]S ssh hadoop

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

使修改后的文件生效

source /etc/profile

测试Hadoop jdk是否安装成功

 hadoop version
 jdk -version
配置hadoop文件

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

hadoop-env.sh

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

**core-site.xml **

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

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>

创建方式
mkdir -p /opt/hd_space/hdfs/data
mkdir -p /opt/hd_space/hdfs/name

#分配权限
chown 自己的用户名:自己的用户名 module/ hd_space/

mapred-site.xml

  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>

yarn-site.xml

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

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

hadoop
格式化 HDFS

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

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

此方法需要用root用户

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

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

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

cd /opt/Hadoop/sbin
start-all.sh

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

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

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

img

配置hbase-env.sh

自己hbase目录下的conf

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

配置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
配置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>

测试运行HBase

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

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

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

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

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

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

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.

说明这是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]

移除其中一个jar包即可:

cd /usr/local/hadoop/share/hadoop/common/lib
rm slf4j-reload4j-1.7.35.jar
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:无效的变量名

打开 ~/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

解决方法:

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

sudo vi log4j.properties

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 首先安装Java环境,Hadoop需要Java环境支持,可以使用yum命令安装: ``` yum install java-1.8.0-openjdk-devel.x86_64 ``` 2. 下载Hadoop安装包,可以从官网下载最新版本: ``` wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz ``` 3. 解压Hadoop安装包: ``` tar -zxvf hadoop-3.3.0.tar.gz ``` 4. 配置Hadoop环境变量,在/etc/profile文件中添加以下内容: ``` export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` 然后执行以下命令使环境变量生效: ``` source /etc/profile ``` 5. 配置Hadoop分布式模式,修改以下配置文件: - /usr/local/hadoop/etc/hadoop/hadoop-env.sh ``` export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-0.el7_9.x86_64 ``` - /usr/local/hadoop/etc/hadoop/core-site.xml ``` <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration> ``` - /usr/local/hadoop/etc/hadoop/hdfs-site.xml ``` <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/usr/local/hadoop/hadoop_data/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/usr/local/hadoop/hadoop_data/hdfs/datanode</value> </property> </configuration> ``` - /usr/local/hadoop/etc/hadoop/mapred-site.xml ``` <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> ``` - /usr/local/hadoop/etc/hadoop/yarn-site.xml ``` <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>localhost</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>1024</value> </property> <property> <name>yarn.nodemanager.resource.cpu-vcores</name> <value>1</value> </property> </configuration> ``` 6. 格式化Hadoop文件系统,执行以下命令: ``` hdfs namenode -format ``` 7. 启动Hadoop服务,执行以下命令: ``` start-all.sh ``` 8. 查看Hadoop服务状态,执行以下命令: ``` jps ``` 如果输出以下内容,则表示Hadoop服务已经启动成功: ``` 12345 NameNode 23456 DataNode 34567 ResourceManager 45678 NodeManager 56789 Jps ``` 9. 访问Hadoop Web界面,打开浏览器,输入以下地址: ``` http://localhost:9870/ ``` 如果能够正常访问,则表示Hadoop分布式安装成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值