亿级数据从 MySQL 到 Hbase 的三种同步方案与实践

作者:微信小助手

发布时间:2020-07-22T09:38:45


点击上方蓝色“程序猿DD”,选择“设为星标”

回复“资源”获取独家整理的学习资料!

1.导语
大家好,我是光城,下面是我之前在gitchat上发布的一个资料,今天全部开源! 源码全部存放在本人github仓库,地址: https://github.com/Light-City/dbSyncScheme 欢迎大家提issue与star!接下来进入本节chat内容!PPT点击阅读原文可直达。
本节亿级数据从 MySQL 到 Hbase 的三种同步方案与实践将主要围绕下面架构图中的三种方法进行实践与讲解。



2.工欲善其事,必先利其器

2.1 环境需知

我的实验环境为: Ubuntu16.04+hadoop伪分布式(所以重点会介绍伪分布式环境部署),本节实验可以适用于大部分Linux。

实验的环境有:

  • MySQL
  • Hadoop伪分布式/完全分布式
  • HBase
  • Phoenix
  • Zookeeper
  • Kafka
  • Maxwell
  • Flink
所以,本节内容先从以上环境部署讲起,再来逐步分析亿级数据从 MySQL 到 Hbase 的三种同步方案与实践。
注意: 本节不会非常深入的去讲解HBase、Phoenix、Kafka、Maxwell、Flink等内容,因为涉及的面非常多,光一个就可以讲很多天了,所以本节将具体的某一块与我们的场景相结合进行阐述,谈谈他们的具体应用与使用,相信大家看完后,对这些会有更加深入的理解!

2.2 伪分布式环境部署

2.2.1.准备工作

【JAVA】

Hadoop环境需要JAVA环境,所以首先得安装Java,而Ubuntu默认Java为OpenJdk,需要先卸载,再安装Oracle。 除此之外,也可以不用卸载OpenJDK,将Oracle JAVA设为默认的即可。

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

关于java配置只要输入java或者javac看到输出,配置成功。

用户

在Ubuntu或者类Unix系统中,用户可以通过下列命令添加创建用户:
sudo useradd -s /bin/bash -g hadoop -d /home/hadoop -m hadoop
如果提示hadoop不再sudoers文件中,执行下列命令:
vi /etc/sudoers

编辑上述文件:

# User privilege specification
root ALL=(ALL:ALL) ALL
hadoop ALL=(ALL:ALL) ALL # 添加此行
再执行上述命令:
light@city:~$ sudo useradd -s /bin/bash -g hadoop -d /home/hadoop -m hadoop
useradd:“hadoop”组不存在
添加用户组:
light@city:/home$ sudo groupadd hadoop

再次执行即可:

light@city:~$ sudo useradd -s /bin/bash -g hadoop -d /home/hadoop -m hadoop

设置或修改密码:

sudo passwd hadoop

SSH

安装ssh

sudo apt-get install openssh-server

配置免密登陆

su - hadoop
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

然后输入

ssh localhost

此时不需要输入密码,说明成功!

注意:关于ssh免秘登陆失败问题,大家可以通过以下方法进行尝试,大部分问题在于目录及文件权限!

sudo chmod 755 $HOME
sudo chmod 600 id_rsa
sudo chmod 600 id_rsa.pub
sudo chmod 644 authorized_keys

2.2.2 伪分布式

Hadoop

  • 下载及安装

在下列镜像中下载Hadoop版本,我下载的3.0.2。

https://mirrors.cnnic.cn/apache/hadoop/common/

wget https://mirrors.cnnic.cn/apache/hadoop/common/hadoop-3.0.2/hadoop-3.0.2.tar.gz
tar zxvf hadoop-3.0.2.tar.gz
sudo mv hadoop-3.0.2 /usr/local/hadoop


  • 配置

编辑etc/hadoop/core-site.xmlconfiguration配置为

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

注意:一定要看本机的9000端口是否被占用,如果被占用了,后面就启动不出来NameNode!
关于查看本机的9000端口是否被占用:
sudo netstat -alnp | grep 9000

会发现9000端口被php-fpm给占用了,所以这里得修改为其他端口,比如我修改为9012,然后可以再次执行这个命令,会发现没被占用,说明可行!

编辑etc/hadoop/hdfs-site.xmlconfiguration配置为

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

  • 初始化

格式化HDFS

bin/hdfs namenode -format

注意:格式化执行一次即可!