3台机器配置hadoop集群_Hadoop+Hbase 分布式集群架构

Posted 张狂年少

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3台机器配置hadoop集群_Hadoop+Hbase 分布式集群架构相关的知识,希望对你有一定的参考价值。

安装搭建Hadoop

1、 配置说明

本次集群搭建共三台机器,具体说明下:

主机名

IP

说明

nn01

192.168.1.51

DataNode、NodeManager、ResourceManager、NameNode

dn01

192.168.1.52

DataNode、NodeManager、SecondaryNameNode

dn02

192.168.1.53

DataNode、NodeManager

2 、安装前准备

2.1 机器配置说明

2.2 关闭 SELinux、防火墙

2.3 准备用户

useradd hadoop  创建用户username

passwd hadoop   给已创建的用户username设置密码Jy6@2022

2.4 修改 Hosts 文件,域名解析

vi /etc/hosts

192.168.1.51 nn01

192.168.1.52 dn01

192.168.1.53 dn02

2.5 同步时间

2.6 SSH 互信配置

(1)生成密钥对,一直回车即可

ssh-keygen

  1. 保证每台服务器各自都有对方的公钥

hadoop用户

ssh-copy-id -i ~/.ssh/id_rsa.pub 127.0.0.1

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop01

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop02

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop03

root用户

ssh-copy-id -i ~/.ssh/id_rsa.pub 127.0.0.1

ssh-copy-id -i ~/.ssh/id_rsa.pub nn01

ssh-copy-id -i ~/.ssh/id_rsa.pub dn01

ssh-copy-id -i ~/.ssh/id_rsa.pub dn02

注:要在集群所有服务器都进行操作

  1. 验证无秘钥认证登录

ssh hadoop@nn01

ssh hadoop@dn01

ssh hadoop@dn02

3、 配置 JDK

在三台机器上都需要操作

4、 安装 Hadoop

[root@hadoop01~]#wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz

[root@hadoop01 ~]# tar -xvf hadoop-3.2.0.tar.gz -C /usr/local/

[root@hadoop01 ~]# chown hadoop.hadoop -R /usr/local/hadoop-3.2.0/

[root@hadoop01 ~]# ln -s /usr/local/hadoop-3.2.0/ /usr/local/hadoop

4.1、 配置启动 Hadoop

4.1.1、 hadoop-env.sh 配置 Hadoop 环境变量

cd /usr/local/hadoop/etc/hadoop

vi hadoop-env.sh

export JAVA_HOME=/mnt/soft/jdk1.8.0_251

export HADOOP_HOME=/usr/local/hadoop

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

4.1.2、 core-site.xml 配置 HDFS

vi core-site.xml

<!--指定HDFS默认(namenode)的通信地址-->

<property>

<name>fs.defaultFS</name>

<value>hdfs://hadoop01:9000</value>

</property>

<!--指定Hadoop运行时产生文件的存储路径-->

<property>

<name>hadoop.tmp.dir</name>

<value>/mnt/data/hadoop/tmp</value>

</property>

4.1.3、 hdfs-site.xml 配置 NameNode

[along@hadoop01 hadoop]$ vim hdfs-site.xml

<!--指定master-->

<property>

<name>hbase.rootdir</name>

<value>hdfs://nn01:8020/hbase</value>

</property>

<!--开启分布式-->

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>

<!--所有可用的zk-->

<property>

<name>hbase.zookeeper.quorum</name>

<value>nn01,dn01,dn02</value>

</property>

<!--给zk用的目录, 必须保证是个空的给zk用-->

<property>

<name>hbase.zookeeper.property.dataDir</name>

<value>/mnt/data/hbase/zookeeper</value>

</property>

4.2、 授权

chown -R hadoop.hadoop /usr/local/hadoop-3.2.0/

chown -R hadoop.hadoop /mnt/data/hadoop

4.3、 启动 Hadoop 集群

4.3.1、 第一次启动前需要格式化,集群所有服务器都需要

三台机器都需要执行/usr/local/hadoop-3.2.0/bin

hdfs namenode -format

4.3.2 、启动并验证集群

  1. 启动 NameNode、DataNode

/usr/local/hadoop-3.2.0/sbin

start-dfs.sh

5、 安装配置 Hbase

5.1、 安装 Hbase

[root@hadoop01~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.4.9/hbase-1.4.9-bin.tar.gz

[root@hadoop01 ~]# tar -xvf hbase-1.4.9-bin.tar.gz -C /usr/local/

[root@hadoop01 ~]# chown -R hadoop.hadoop /usr/local/hbase/

5.2、 指定集群节点

6、 启动 Hbase 集群

6.1、 启动前准备

mkdir /mnt/data/hbase/zookeeper

6.2、 启动 Hbase

注:只需在 Hadoop01 服务器上操作即可。

  1. 启动

start-hbase.sh

  1. 验证

至此,hbase分布式集群搭建完成!

Hadoop-3.1.3高可用集群部署

1. 部署前提

操作用户:hadoop

操作目录:/home/hadoop/apps

操作机器(3台):hadoop1,hadoop2,hadoop3

3台机器都是Centos7,安装了JDK1.8和一个已启动的Zookeeper-3.5.7集群。

以下是添加用户、配置免密登录,关闭防火墙等操作:

# 3台机器都需进行如下配置
# 新增hadoop用户
useradd hadoop
passwd hadoop
New password:
Retype new password:

授权 root 权限,在root下面加一条hadoop的hadoop ALL=(ALL) ALL
#修改权限
chmod 777 /etc/sudoers
vim /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
#恢复权限
chmod 440 /etc/sudoers

# 配置免密登录
#进入到我的home目录,
su - hadoop
ssh-keygen -t rsa (连续按四个回车)
#执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
#将公钥拷贝到要免密登录的机器上
ssh-copy-id hadoop2
ssh-copy-id hadoop3

# 主机名ip地址映射
sudo vim /etc/hosts
192.168.62.161 hadoop1
192.168.62.162 hadoop2
192.168.62.163 hadoop3

# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld

# 禁用selinux
sudo vim /etc/selinux/config
SELINUX=enforcing --> SELINUX=disabled

# 配置时间同步
# 安装ntpdate工具
sudo yum -y install ntp ntpdate
# 设置系统时间与网络时间同步
ntpdate 0.asia.pool.ntp.org
# 将系统时间写入硬件时间
hwclock --systohc


2. 集群节点规划

Hadoop-3.1.3高可用集群部署_yarn

此集群中Hadoop的NameNode是HA的,Yarn的ResourceManger也是HA的,从而保证了Hadoop集群的高可用。


3. 下载

在hadoop1机器上执行

wget https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz


4. 解压

tar -zxvf hadoop-3.1.3.tar.gz


5. 修改环境变量

# 添加环境变量
sudo vim /etc/profile
export HADOOP_HOME=/home/hadoop/apps/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# 刷新配置
source /etc/profile


6. 修改配置文件

# 配置文件所在目录
cd /home/hadoop/apps/hadoop-3.1.3/etc/hadoop


6.1. 修改hadoop-env.sh

vim hadoop-env.sh
# Set Hadoop-specific environment variables here.
#指定JAVA_HOME
export JAVA_HOME=/opt/jdk1.8.0_212
#指定hadoop用户,hadoop3.x之后必须配置(我的用户名就叫hadoop)
export HDFS_NAMENODE_USER=hadoop
export HDFS_DATANODE_USER=hadoop
export HDFS_ZKFC_USER=hadoop
export HDFS_JOURNALNODE_USER=hadoop
export YARN_RESOURCEMANAGER_USER=hadoop
export YARN_NODEMANAGER_USER=hadoop


6.2. 修改core-site.xml

vim core-site.xml 
<configuration>
<!--集群名称-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value> </property>
<!--临时目录:提前创建好-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/data/hadoop_tmp_data</value>
</property>
<!--webUI展示时的用户-->
<property>
<name>hadoop.http.staticuser.user</name>
<value>hadoop</value>
</property>
<!--高可用依赖的zookeeper的通讯地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
<!--用于连接hive server2(可选项)-->
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>


6.3. 修改hdfs-site.xml

vim hdfs-site.xml
<configuration>
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!--定义hdfs集群中的namenode的ID号-->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!--定义namenode的主机名和rpc协议的端口-->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop2:8020</value>
</property>
<!--定义namenode的主机名和http协议的端口-->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop1:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop2:9870</value>
</property>
<!--定义共享edits的url-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/ns1</value>
</property>
<!--定义hdfs的客户端连接hdfs集群时返回active namenode地址-->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<!--hdfs集群中两个namenode切换状态时的隔离方法-->
<propertyhadoop集群拓扑配置

在一台机器上运行 Hadoop 集群

hadoop全分布式集群搭建好了,每台机器启动的节点也正确,但是就是不能上传本地文件,报错:

Hadoop篇05Hadoop配置集群时间同步

Hadoop集群配置

Hadoop_机器信息分布表