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
保证每台服务器各自都有对方的公钥
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
注:要在集群所有服务器都进行操作
验证无秘钥认证登录
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 、启动并验证集群
启动 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 服务器上操作即可。
启动
start-hbase.sh
验证
至此,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的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集群拓扑配置