虚拟机环境的准备ssh免密登录(root和普通用户)安装jdkHadoop分布式安装Zookeeper安装部署Kafka集群的安装部署Flume集群的安装部署Mysql的安装部署Hive的安装部署Datax安装部署Maxwell安装部署
虚拟机环境的准备·修改虚拟机为静态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:WindowsSystem32driversetc
·关闭防火墙
·停止防火墙
·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 rea
·将公匙拷贝到要免密登录的服务器上
·ssh-copy-id 主机名
安装jdk
·检查是否安装过JDK ·rpm -qa |grep -i java ·卸载JDK ·rpm -qa|grep -i java | xargs -nl rpm -e --nodeps -i:忽略大小写 ·配置环境变量 ·source /etc/profileHadoop分布式安装
·集群部署规划(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)Zookeeper安装部署·HDFS配置文件(hdfs-site.xml) fs.defaultFS hdfs://hadoop101:8020 hadoop.tmp.dir /opt/module/hadoop-3.1.3/data hadoop.http.staticuser.user gq hadoop.proxyuser.gq.hosts * hadoop.proxyuser.gq.groups * hadoop.proxyuser.gq.users * ·YARN配置文件(yarn-site.xml) dfs.namenode.http-address hadoop101:9870 dfs.namenode.secondary.http-address hadoop103:9868 dfs.replication 3 ·MapReduce配置文件(mapred-site.xml) yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname hadoop103 yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME yarn.scheduler.minimum-allocation-mb 512 yarn.scheduler.maximum-allocation-mb 4096 yarn.nodemanager.resource.memory-mb 4096 yarn.nodemanager.pmem-check-enabled false yarn.nodemanager.vmem-check-enabled false ·配置workes(该文件中添加的内容结尾不允许有空格,文件中不允许有空行) hadoop101 hadoop102 hadoop103 ·配置历史服务器(mapred-site.xml) mapreduce.framework.name yarn mapreduce.jobhistory.address hadoop102:10020 ·配置日志的聚集(yarn-site.xml) mapreduce.jobhistory.webapp.address hadoop102:19888 yarn.log-aggregation-enable true yarn.log.server.url http://hadoop101:19888/jobhistory/logs yarn.log-aggregation.retain-seconds 604800
·集群规划:每台服务器都安装 ·在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.xmlDatax安装部署·将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 javax.jdo.option.ConnectionURL jdbc:mysql://hadoop101:3306/metastore?useSSL=false javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName root #hdfs的hive目录 javax.jdo.option.ConnectionPassword 123456 #解决与idea想连接的可能出现的报错 hive.metastore.warehouse.dir /user/hive/warehouse #开启jdbc连接方式/jdbc连接方式的端口号 hive.metastore.schema.verification false hive.server2.thrift.port 10000 hive.server2.thrift.bind.host hadoop101 #显示所在数据库 hive.metastore.event.db.notification.api.auth false hive.cli.print.header true hive.cli.print.current.db true ·注: ·iveserver2:能够实现远程的jdbc连接 ·命令行 ·启动hiveserver2 ·bin/hive --service hiveserver2 ·启动beeline客户端 ·bin/beenline -u jdbc:hive2://hadoop102:10000 -n gq ·开启元数据服务 ·在hive-site.xml配置元服务 javax.jdo.option.ConnectionURL jdbc:mysql://hadoop102:3306/metastore?useSSL=false&useUnicode=true&characterEncoding=UTF-8 ·启动metastore服务 ·hive --service metastore 启动过,启动窗口不能再进行任何操作,需要重新打开一个shell窗口 ·启动hive ·只要主服务器启动了元数据服务,在从服务器配置元数据服务的主机地址,无需密码就能连接到hive,达到高可用的目的 hive.metastore.uris thrift://hadoop102:9083
下载地址: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 / |zcatMaxwell安装部署
地址: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



