虚拟机环境的准备
·修改虚拟机为静态ip
·vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="ens33"
PREFIX=24
//ip地址
IPADDR=192.168.88.101
//网关
GATEWAY=192.168.88.2
DNS1=192.168.88.2
·查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8
·修改NAT模式(与虚拟机共享的主机的IP地址)
·子网IP 子网掩码
·修改Windows系统VM8网络IP
·修改主机名
·修改主机名 /etc/hostname
·配置主机映射 /etc/hosts
·修改Windows主机映射文件 C:\Windows\System32\drivers\etc
·关闭防火墙
·停止防火墙
·systemctl stop firewalld
·关闭自启
·systemctl disable firewalld
·配置普通用户具有root权限
·/etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
gq ALL=(ALL) NOPASSWD: ALL
·重启 reboot
ssh免密登录(root和普通用户)
·免密登录
·ssh 主机名
·无密匙配置
·生成公匙密匙
·ssh-keygen -t rsa
·将公匙拷贝到要免密登录的服务器上
·ssh-copy-id 主机名
安装jdk
·检查是否安装过JDK
·rpm -qa |grep -i java
·卸载JDK
·rpm -qa|grep -i java | xargs -nl rpm -e --nodeps
-i:忽略大小写
·配置环境变量
·source /etc/profile
Hadoop分布式安装
·集群部署规划(NameNode、Second NameNode、ResourceManager尽量规划到不同的服务器上)
·配置环境变量
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
·配置集群
·核心配置文件(core-site.xml)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>gq</value>
</property>
<property>
<name>hadoop.proxyuser.gq.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.gq.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.gq.users</name>
<value>*</value>
</property>
</configuration>
·HDFS配置文件(hdfs-site.xml)
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop101:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop103:9868</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
·YARN配置文件(yarn-site.xml)
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
·MapReduce配置文件(mapred-site.xml)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
·配置workes(该文件中添加的内容结尾不允许有空格,文件中不允许有空行)
hadoop101
hadoop102
hadoop103
·配置历史服务器(mapred-site.xml)
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>
·配置日志的聚集(yarn-site.xml)
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop101:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
Zookeeper安装部署
·集群规划:每台服务器都安装
·在zookeeper目录下创建zkData目录,创建myid文件,添加编号
·配置zoo.cfg文件
·修改数据存储路径:
·dataDir=/opt/module/zookeeper-3.5.7/zkData
·增加如下配置
#######################cluster##########################
server.1=hadoop102:2888:3888
server.2=hadoop103:2888:3888
server.3hadoop104:2888:3888
·server.A=B:C:D
A:代表几号服务器,与myid的编号对应
B:服务器地址
C:Follower与集群的Leader服务器交换信息的端口
D:选举使用的端口
Kafka集群的安装部署
·在kafka下创建logs目录
·配置文件(server.properties)
修改或者增加以下内容:
#broker的全局唯一编号,不能重复
broker.id=0
#删除topic功能使能
delete.topic.enable=true
#kafka运行日志存放的路径
log.dirs=/opt/module/kafka/data
#配置连接Zookeeper集群地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka
·配置环境变量
Flume集群的安装部署
·删除lib下的guava-11.0.2.jar删除以兼容Hadoop 3.1.3
·修改/conf下的log4j.properties日志打印位置
#console表示同时将日志输出到控制台
flume.root.logger=INFO,LOGFILE,console
#固定日志输出的位置
flume.log.dir=/opt/module/flume/logs
#日志文件的名称
flume.log.file=flume.log
·添加环境变量
Mysql的安装部署
·卸载自带的mysql-libs:小型的数据库与mysql冲突
·rpm -qa | grep -i -E mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps
·安装包和驱动
·安装mysql依赖
·sudo rpm -ivh 01_mysql-community-common-5.7.16-1.el7.x86_64.rpm
·sudo rpm -ivh 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
·sudo rpm -ivh 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
·安装mysql-client
·sudo rpm -ivh 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm
·安装mysql-server
·sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm
·如果缺少依赖:sudo yum install -y libaio
·可以先初始化mysql,也可以不初始化
·初始化mysql,需要/etc/my.conf中datadir中指向的目录为空
·sudo mysqld --initialize --user=mysql
·查看随机生成的密码
·sudo cat /var/log/mysqld.log
·登录mysql
·修改密码
·set password = password("");
·更改mysql密码策略
·set global validate_password_length=4;
·set global validate_password_policy=0;
·进入mysql数据库,修改user表中host内容,允许任意ip连接
·update mysql.user set host='%' where user='root'
·flush privileges
Hive的安装部署
·将mysql的jdbc驱动拷贝到hive的lib目录下
·添加环境变量
·处理日志jar包冲突
·mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bak
·元数据配置到mysql
·在/hive/conf下创建hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop101:3306/metastore?useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
#hdfs的hive目录
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
#解决与idea想连接的可能出现的报错
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
#开启jdbc连接方式/jdbc连接方式的端口号
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hadoop101</value>
</property>
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
#显示所在数据库
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
</configuration>
·将hive-env.sh.template改为hive-env.sh
·将export HADOOP_HEAPSIZE=1024放开
·启动mysql,创建metastore数据库
·初始化Hive的元数据库
·schematool -initSchema -dbType mysql -verbose
·修改元数据字符集(元数据库的字符集默认为Latin1),不支持中文
·在mysql中修改Hive元数据库中存储注释的字段的字符集为utf-8以及表注释
·alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
·alter table TABLE_PARAMS modify column PARAM_VALUE mediumtext character set utf8;
·修改hive-site.xml中的jdbc url
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>
·注:
·iveserver2:能够实现远程的jdbc连接
·命令行
·启动hiveserver2
·bin/hive --service hiveserver2
·启动beeline客户端
·bin/beenline -u jdbc:hive2://hadoop102:10000 -n gq
·开启元数据服务
·在hive-site.xml配置元服务
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop102:9083</value>
</property>
·启动metastore服务
·hive --service metastore
启动过,启动窗口不能再进行任何操作,需要重新打开一个shell窗口
·启动hive
·只要主服务器启动了元数据服务,在从服务器配置元数据服务的主机地址,无需密码就能连接到hive,达到高可用的目的
Datax安装部署
下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
·安装过后自检
·python /bin/datax.py /job/job.json
·dataX的使用:只需根据自己同步数据的数据源和目的地选择相应的Reader和Writer
·查看dataX配置文件模板
·python /bin/datax.py -r mysqlreader -w hdfswriter
·Reader和Writer的具体参数可参考官方文档,地址如下:
·https://github.com/alibaba/DataX/blob/master/README.md
·https://gitee.com/mirrors/DataX/blob/master/README.md
·查看hdfs的gzip压缩文件
·hadoop fs -cat / |zcat
Maxwell安装部署
地址:https://github.com/zendesk/maxwell/releases/download/v1.29.2/maxwell-1.29.2.tar.gz(注:Maxwell-1.30.0及以上版本不再支持JDK1.8。)
·修改mysql配置---/etc/my.conf
·增加配置
#数据库id
server-id = 1
#启动binlog,该参数的值会作为binlog的文件名
log-bin=mysql-bin
#binlog类型,maxwell要求为row类型
binlog_format=row
#启用binlog的数据库,需根据实际情况作出修改
binlog-do-db=gmall
·Maxwell需要在MySQL中存储其运行过程中的所需的一些数据,包括binlog同步的断点位置(Maxwell支持断点续传)等等,故需要在MySQL为Maxwell创建数据库及用户。
·创建maxwell数据库以及用户
·创建数据库
·CREATE DATABASE maxwell;
·如果没有初始化mysql,需要调整策略级别
·set global validate_password_policy=0;
·set global validate_password_length=4;
·创建maxwell用户并赋予其必要权限
· CREATE USER 'maxwell'@'%' IDENTIFIED BY 'maxwell';
· GRANT ALL ON maxwell.* TO 'maxwell'@'%';
· GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'%';
·配置maxwell的config.properties
#Maxwell数据发送目的地,可选配置有stdout|file|kafka|kinesis|pubsub|sqs|rabbitmq|redis
producer=kafka
#目标Kafka集群地址
kafka.bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092
#目标Kafka topic,可静态配置,例如:maxwell,也可动态配置,例如:%{database}_%{table}
kafka_topic=maxwell
#MySQL相关配置
host=hadoop102
user=maxwell
password=maxwell
jdbc_options=useSSL=false&serverTimezone=Asia/Shanghai
·启停maxwell
·/opt/module/maxwell/bin/maxwell --config /opt/module/maxwell/config.properties --daemon
· ps -ef | grep maxwell | grep -v grep | grep maxwell | awk '{print $2}' | xargs kill -9