hadoop3.2HA环境搭建,以及hbase的安装。

1、准备环境
Centos 7虚拟机三台
Jdk 13(8以上的版本就可以,记住不要下arm散分的那个包。)
Hadoop-3.2.0
Zookeeper-3.6.2
hbase-2.3.1
远程连接工具(随意,没有也行)

(要注意,这里jdk的版本,官网可以查看jdk、hadoop、hbase三者之间的适配关系,要注意这里的版本,不然非常容易出现一些不容易辨别的异常。下面有例子。)

2、 在搭建搭建hadoop集群之前,有一点很重要,那就是要确保你的虚拟机环境搭建。这里的虚拟机环境,指的是:
1、 虚拟机网络配置:
第一、 确保能够ping命令可以连通外网,如果有问题,直接检查网卡文件中的网关和ip。(ctrl+c或者z可以停止)
在这里插入图片描述
第二、 确保三台虚拟机之间能够互相ping通。
在这里插入图片描述
第三,确保本机能后ping通虚拟机(注意,没有配置ip映射,是无法使用主机名进行访问的)
在这里插入图片描述

虚拟机网络配置最关键的就是一致,网络连接的方式大概有三种,一般的,我们使用nat模式来配置网络,在这里,我同样使用nat模式。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Nat模式下,我觉得最重要的就是一致,在虚拟机之外,vm提供的虚拟网络编辑器(上三图)中的子网掩码、ip地址范围等,依旧本机适配器选项中vmnet8网卡的ipv4属性应该保持一致。
除此之外就是虚拟机网卡文件之中。
在这里插入图片描述

使用静态ip,开机自启动打开,以及ip地址,子网掩码,网关,dns服务的配置也应该和上面两处保持一致。
注意,修改完网卡文件之后需要重启网络配置,或者直接重启。

配置虚拟机网络时,使用到的命令不多
(vi编辑器 vi或者vim后加空格加文件名进入编辑界面、按o表示换行,a表示下一个位,i表示当前位置。编辑完成之后,使用esc进入底部模式,:q表示退出不保存,:wq表示保存退出。前加感叹号表示强制执行
切换目录 cd 加目录名
查看文件 cat 加文件名
展示目录内容 ls 加目录名
重启 reboot
重启网络服务 service network restart
关闭防火墙 systemctl stop firewalld.service
永久关闭防火墙(上一条命令执行之后) systemctl disable firewalld.service)

2、ssh服务
对于三台虚拟机而言,ssh很重要,一般来讲,不会出现,虚拟机之中没有ssh服务的情况,但是也不一定。不过这很简单就可以解决(yum install sshd)安装就可以。

三台虚拟机的ssh服务一定要连通,一般来说,如果ssh服务出现了问题,你使用远程连接工具时无法连接到虚拟机的。

要确保三台虚拟机互相之间都能够免密登录
在这里插入图片描述

配置免密登录的原理其实很简单,这起源于服务器对客户端传输数据诞生的公钥和私钥条款,当然这里不会介绍。
总而言之,配置免密登录的原理就是,三台虚拟机都生成秘钥,然后将他们全部拷贝到一台虚拟机,要注意包括那一台虚拟机自身也要执行拷贝到自己的命令。这个时候那一台虚拟机实际上就已经拥有了三台虚拟机的钥匙,然后将这个钥匙代表的文件拷贝到其他两台虚拟机,就可以实现三台虚拟机之间的免密登录了。

(命令
生成自己的秘钥:ssh-keygen -t rsa
拷贝到一台虚拟机:ssh-copy-id 虚拟机名
拷贝钥匙到其他主机:scp /root/.ssh/authorized_kyes 虚拟机名:/root/.ssh:)’
如果说中间的步骤有了什么失误,可以直接删除/roor/.ssh下的所有内容。
(删除目录的命令 rm -rf 加目录名)
2、 jdk的存在
这一步相对而言,是最简单的,它只需要你下载一个jdk的tar包,然后解压,配置环境变量就可以。
最后你需要验证一下,是否配置成功,只需要一个万能的查看版本号的命令(java -version)
在这里插入图片描述

(解压的命令 tar -zxvf 文件名 目标文件夹
更改文件夹名:mv 旧名字 新名字
环境变量,就是/etc/profile这个文件)
在这里插入图片描述

添加这两行就可以。
2、开始搭建hadoop集群,要注意,这里搭建的高可用,高可用的前提是一个特殊的机制,那就是zookeeper。

在这里,我是直接在官网去下载的zookeeper的3.6.0版本。
和传统的版本一样,zookeeper的安装堪称简单,只需要解压修改配置文件就可以了
在这里插入图片描述

这个文件的目录取决于解压zookeeper的目录,如果没有指定解压目录,那么很明显,那就是在你压缩包的当前目录下。
在这里插入图片描述

将zoo_sample.cfg文件改名为zoo.cfg,修改内容如下。
在这里插入图片描述

注意上图的配置,特别是最后的server的数字,代表了你datadir目录下myid文件中的内容。
在这里插入图片描述
在这里插入图片描述

记得去创建datadir目录,和其中的myid文件,同时在拷贝到两台虚拟机的时候,要注意myid文件中的内容,对于zookeeper来说,myid文件当中的内容就是这台主机的表标识。
启动zookeeper的方式很简单,直接启动文件就可以。
在这里插入图片描述

第一个红框是路径,也就是zookeeper下的bin目录,第二个就是zookeeper服务的开启关闭命令(zkServer.sh start或者stop),第三就是客户端的命令。

Zookeeper搭建完成之后,记得三台虚拟机全部开启,下面开始搭建hadoop HA高可用集群。

3、 核心几大配置文件

start-dfs.sh stop-dfs.sh
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=root

start-yarn.sh stop-yarn.sh YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root

core-site.xml
 <property>
                <name>fs.defaultFS</name>
                <value>hdfs://my01</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/export/server/hadoop/tmp</value>
        </property>
        <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
        <property>
          <name>ha.zookeeper.quorum</name>
          <value>good1:2181,good2:2181,good3:2181</value>
        </property>
hdfs-site.xml
 <configuration>                                        
<property>                                        
 <name>dfs.nameservices</name>                                      
 <value>my01</value>                               
</property>                                        
<property>                                        
 <name>dfs.replication</name>                  
 <value>3</value>                                        
</property>                                        
<property>                                        
 <name>dfs.permissions.enabled</name>                     
 <value>false</value>                                        
</property>                                        
<property>                                        
 <name>dfs.ha.namenodes.my01</name>             
 <value>nn1,nn2,nn3</value>                                        
</property>                                        
<property>                                        
 <name>dfs.namenode.rpc-address.my01.nn1</name>                                        
 <value>good1:9820</value>                                        
</property>                                        
<property>                                        
 <name>dfs.namenode.rpc-address.my01.nn2</name>                                        
 <value>good2:9820</value>                                 
</property>                                        
<property>                                        
 <name>dfs.namenode.rpc-address.my01.nn3</name>                                        
 <value>good3:9820</value>                                        
</property>                                                              
<property>                                        
 <name>dfs.namenode.http-address.my01.nn1</name>                                        
 <value>good1:9870</value>                                        
</property>                                        
<property>                                        
 <name>dfs.namenode.http-address.my01.nn2</name>                                        
 <value>good2:9870</value>                               
</property>                                        
<property>                                        
 <name>dfs.namenode.http-address.my01.nn3</name>                                        
 <value>good3:9870</value>                                        
</property>                                          
<property>                                        
 <name>dfs.ha.automatic-failover.enabled</name>                                        
 <value>true</value>                                 
</property>                                        
<property>                                        
 <name>dfs.namenode.shared.edits.dir</name>                                        
 <value>qjournal://good1:8485;good2:8485;good3:8485/my01</value>                                        
</property>                               
<property>                                        
 <name>dfs.journalnode.edits.dir</name>                                        
 <value>/export/server/hadoop/tmp/journaldata</value>                                        
</property>     
<property>                                        
 <name>dfs.client.failover.proxy.provider.my01</name>                                        
 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>                                  
</property>                    
<property>                                        
 <name>dfs.ha.fencing.methods</name>                   
 <value>sshfence</value>                                        
</property>                                        
<property>                                        
 <name>dfs.ha.fencing.ssh.private-key-files</name>                                        
 <value>/root/.ssh/id_rsa</value>                                        
</property>                      
<property>                                        
 <name>dfs.ha.fencing.ssh.connect-timeout</name>                                        
 <value>30000</value>                   
</property>                                        
<property>                                        
 <name>dfs.namenode.handler.count</name>                                        
 <value>100</value>                           
</property>                    
<property>                                        
 <name>dfs.ha.automatic-failover.enabled</name>                                        
 <value>true</value>                          
</property>                                        
</configuration>                            
yarn-site.xml
<configuration>                                    
<property>                                    
        <name>yarn.resourcemanager.connect.retry-interval.ms</name>                                    
        <value>2000</value>                                    
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.ha.enabled</name>                      
        <value>true</value>                                    
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>                                    
        <value>true</value>                                    
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.ha.automatic-failover.embedded</name>                                    
        <value>true</value>                                    
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.cluster-id</name>            
        <value>yarn-rm-cluster</value>                  
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.ha.rm-ids</name>        
        <value>rm1,rm2</value>                                    
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.hostname.rm1</name>                             
        <value>good1</value>                                    
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.hostname.rm2</name>                         
        <value>good2</value>                                    
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.recovery.enabled</name>                     
        <value>true</value>                      
</property>                       
<property>                                    
   <description>The class to use as the persistent store.</description>                                    
   <name>yarn.resourcemanager.store.class</name>                       
   <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>                                    
 </property>                                    
<property>                                    
        <name>yarn.resourcemanager.zk.state-store.address</name>                                    
        <value>good1:2181,good2:2181,good3:2181</value>                                    
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.zk-address</name>                                    
        <value>good1:2181,good2:2181,good3:2181</value>                                    
</property>                       
<property>                                    
        <name>yarn.resourcemanager.address.rm1</name>                                    
        <value>good1:8032</value>                                    
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.scheduler.address.rm1</name>                                    
        <value>good1:8034</value>                                    
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.webapp.address.rm1</name>                                    
        <value>good1:8088</value>                                    
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.address.rm2</name>                                    
        <value>good2:8032</value>                                    
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.scheduler.address.rm2</name>                                    
        <value>good2:8034</value>                                    
</property>                                    
<property>                                    
        <name>yarn.resourcemanager.webapp.address.rm2</name>                                    
        <value>good2:8088</value>                                    
</property>                                    
<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.application.classpath</name>                                    
    <value>                                    
        /export/server/hadoop/etc/hadoop,                                    
        /export/server/hadoop/etc/hadoop/common/*,                                    
        /export/server/hadoop/etc/hadoop/common/lib/*,                                    
        /export/server/hadoop/etc/hadoop/hdfs/*,                                    
        /export/server/hadoop/etc/hadoop/hdfs/lib/*,                                    
        /export/server/hadoop/etc/hadoop/mapreduce/*,                                    
        /export/server/hadoop/etc/hadoop/mapreduce/lib/*,                                    
        /export/server/hadoop/etc/hadoop/yarn/*,                                    
        /export/server/hadoop/etc/hadoop/yarn/lib/*                                              
    </value>                                    
  </property>                                    
</configuration>    
mapred-site.xml
<configuration>                                    
<property>                                    
<name>mapreduce.framework.name</name>                                    
<value>yarn</value>            
</property>                                    
<property>                                    
  <name>yarn.app.mapreduce.am.env</name>                                    
  <value>HADOOP_MAPRED_HOME=/export/server/hadoop</value>                                    
</property>                                    
<property>                                    
  <name>mapreduce.map.env</name>                                    
  <value>HADOOP_MAPRED_HOME=/export/server/hadoop</value>                                    
</property>                                    
<property>                                    
  <name>mapreduce.reduce.env</name>                                    
  <value>HADOOP_MAPRED_HOME=/export/server/hadoop</value>                                    
</property>                                    
<property>                                    
        <name>mapreduce.application.classpath</name>                                    
        <value>                                    
        /export/server/hadoop/etc/hadoop,                                    
        /export/server/hadoop/etc/hadoop/common/*,                                    
        /export/server/hadoop/etc/hadoop/common/lib/*,                                    
        /export/server/hadoop/etc/hadoop/hdfs/*,                                    
        /export/server/hadoop/etc/hadoop/hdfs/lib/*,                                    
        /export/server/hadoop/etc/hadoop/mapreduce/*,                                    
        /export/server/hadoop/etc/hadoop/mapreduce/lib/*,                                    
        /export/server/hadoop/etc/hadoop/yarn/*,                                    
        /export/server/hadoop/etc/hadoop/yarn/lib/*                                    
        </value>                                    
</property>                                    
</configuration>                            
hadoop-env.sh
export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop/

这个文件是hadoop3.0才增加的新特性。

workers
good1
good2
good3
hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://my01/hbase</value>
</property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>good1:2181,good2:2181,good3:2181</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>

hbase中自带了zookeeper,但是一般来说我们都会在配置文件之中选择关闭掉他

export JAVA_HOME=/export/servers/jdk
export HBASE_MANAGES_ZK=false

这是最终的环境变量文件

/etc/profile
export JAVA_HOME=/export/server/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export ZOOKEEPER_HOME=/export/server/zookeeper
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HBASE_HOME=/export/server/hbase
export PATH=$PATH:$HBASE_HOME/bin

配置好的hadoop-3.0.1复制到每一个节点

scp -r hadoop-3.0.1 hadoop02@hadoop02:/home/hadoop02    

把文件从/home/hadoop02路径转移到/usr/software
格式化hdfs
第一次安装hdfs的时候,需要对hdfs进行相关的格式化操作,以后就不需要了。
a.保持zookeeper启动(每个节点)

/usr/software/zookeeper-3.4.11/bin/./zkServer.sh status         

b.启动journalnode(每个节点)

cd /usr/software/hadoop-3.0.1/sbin                    
./hadoop-daemon.sh start journalnode     

或sbin/hadoop-daemon.sh start journalnode

多出一个JournalNode进程
c.格式化HDFS(hadoop01节点执行格式化即可)

hdfs namenode -format

hdfs zkfc -formatZK //格式化高可用
hadoop01上启动namenode节点
关闭所有节点journalnode

hadoop-daemon.sh stop journalnode    
hdfs namenode    

启动之后在其它子节点启动:hdfs namenode -bootstrapStandby
其它子节点同步完master上的元数据之后,在master节点上按下ctrl+c来结束namenode进程。
之后可以分别启动,也可以直接全部启动整个hadoop集群。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

最终结果是三台,三个NameNode。这也是hadoop3.0的特色,这意味着除非所有的节点全部死掉,否则集群依然可以运转。(journalnode作为监控节点存在,之前我们关闭了他,现在可以启动他,也可以不用)

hdfs haadmin -transitionToActive --forcemanual nn1

注意!!!!!!
默认的,三台NameNode都会是standy状态,这个时候需要手动的去切换他,命令如上!

注意!!!!!!!!!!!!!!!!!!
Hadoop集群搭建最关键就是原理,配置文件中的每一个节点起到的作用的不可估量
有一些节点可以把当作为一些参数,这些节点就属于,可逆的操作,也就是说,出现了问题之后,我们可以通过修改这些节点来弥补,但是有一些节点就不属于这种类型。
这些不属于参数的节点,一般情况下,在格式化或者是启动对应的节点之后,都会产生不可逆的操作,比如创建日志文件,留下NameNode或者DataNode的数据之类的,因为这一类操作产生的问题,最难解决,你需要精准的记住每一个配置节点中的你所配置每一个文件夹的名字,然后关闭集群,删除其中内容,再次格式化,重新启动,而这样的方式往往十分繁琐,因为在搭建HA的时候,本身需要配置的路径就比较多,在加上linux中命令行方式本身就不太方便,因此如果遇到直接情况,重装往往来的方便快捷。

!!!!!!
Hadoop集群的搭建,有一个一直被忽略的点,那就是启动顺序的问题!
这一点十分关键!!!!!
例如,zookeeper作为一个协调分布式服务,就需要三台虚拟机全部启动之后,才能执行选举机制,这个时候才能查询到zookeeper状态。
开启集群的正确步骤!!!!!(第一次)
启动zookeeper(作为一个老工人的存在,这一步必须在第一步)
启动监控节点(journalnode顾名思义,不必考虑)
格式化hdfs(第一步使用,之后不必如此)(同步NameNode数据是3.0的特色,其余的版本,比如2.0是执行拷贝,让第二台接受配置)
格式化高可用(也就是hdfs zkfc -formatZK)
启动hdfs
启动yarn(这两步的确可以一起启动)
当集群正常启动之后,在集群之上的比如hbase才能正常运行,否则就特别容易出现节点莫名其妙死掉的现象。
问题:
NameNode格式化出现报错,其中显示拒绝连接:这里的问题不止一个
其中最容易解决的就是在core-site.xml文件中的参数配置,也就是hadoop运行时文件的存放目录,这一步需要注意一点,这个目录需要和datanode以及NameNode的目录包括journalnode的数据存放目录形成上下级关系。
之后就是NameNode的数据存放目录了,当你事先创建好这个目录,然而依旧是出现错误的时候,有一个建议,删掉那个目录,重新格式化,你就会发现格式化成功,这里是因为重复格式化诞生的错误,每一次格式化都会有数据写入或者删除,因为这些存放数据的目录,别以为他们真的空空如也。
之后就是最简单的防火墙啊,ssh服务的了,这些问题极容易解决,这里就不多说。
最重要的是,保证配置文件正确,理解原理才能确认配置文件不错,而不是说你去和百度上的对比,这是极为愚蠢的!!!!!!!!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop是一个开源的大数据处理框架,用于分布式存储和处理大量数据。安装Hadoop 3.2通常分为几个步骤,这里我会给出一个概述: 1. **下载Hadoop**: 访问Apache Hadoop官网(https://hadoop.apache.org/releases.html),找到对应版本的Hadoop,下载适合你操作系统的二进制包,比如`hadoop-3.2.0.tar.gz`。 2. **配置Java环境**:Hadoop需要Java运行环境。确保你的系统中已经安装了JDK,并且环境变量设置正确。 3. **解压并配置目录**:将下载的tar.gz文件解压到一个指定的目录,例如`/usr/local/hadoop`,创建必要目录结构。 ``` tar -xzf hadoop-3.2.0.tar.gz mkdir -p /usr/local/hadoop/{bin,conf,data,logs} ``` 4. **编辑配置文件**: - `conf/core-site.xml`: 设置全局配置,如HDFS的名称节点地址、DataNode的数量等。 - `conf/hdfs-site.xml`: HDFS相关的配置,如副本策略、名称服务地址等。 - `conf/yarn-site.xml` (如果使用YARN模式):YARN的相关配置。 5. **启动服务**: - 首次安装时,你需要运行`sbin/start-all.sh`或`sbin/start-dfs.sh`来启动Hadoop守护进程(NameNode、DataNode、SecondaryNameNode、HDFS客户端)。 - 如果使用YARN,还需要运行`sbin/start-yarn.sh`。 6. **验证安装**: - 使用命令`hadoop fs -ls`来检查HDFS是否正常工作。 - 可以访问 Namenode 的 web UI(默认http://localhost:50070/)来查看集群状态。 **相关问题**: 1. Hadoop有哪些主要组件? 2. 如何在Linux上检查Java环境是否设置正确? 3. 如何在Hadoop配置文件中设置Namenode地址?

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值