所有脚本和配置文件内容查看请点击
0.JDK1.解压文件 1.1可以写一个分发脚本xsync.sh方便分发配置文件和项目框架 1.2配置SSH免密,方便文件的传输 2.在/etc/profile.d/my_env.sh 文件中编写环境变量(如果没有,就创建) 3.使环境变量生效source /etc/profile1.Hadoop
1.解压Hadoop压缩包到/opt/module目录下 2.配置环境变量,分发环境变量 3.编写配置文件hdfs-site.xml,core-site.xml,yarn-site.xml,mapred-site.xml,workers 4.分发hadoop到每个节点上 5.初始化hadoop bin/hdfs namenode -format 如果可以打开网页端,那就说明正常启动 6.hadoop群起脚本的编写 myhadoop.sh2.Mysql
1.使用命令卸载系统自带的mysql “rpm -qa | grep -i -E mysql|mariadb | xargs -n1 sudo rpm -e --nodeps”
2.分模块安装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
sudo rpm -ivh 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm
sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm
3.启动mysql
sudo systemctl start mysqld
4.查看mysql密码
sudo cat /var/log/mysqld.log | grep password
5.登录进入mysql
6.更改密码进行密码安全性操作
set password=password("Qs23=zs32");
7.修改密码策略
set global validate_password_length=4;
set global validate_password_policy=0;
8.设置简单密码
set password=password("root");
9.更改用户权限,方便外部工具连接
use mysql
update user set host="%" where user="root";
flush privileges;
3.Zookeeper
Zookeeper一般安装单数台机器,常用即3台或5台 1.解压Zookeeper 2.在Zookeeper中创建目录zkData 3.创建文件myid打上对应的服务编号,2 4.分发zookeeper,修改对应节点上的服务编号 5.将zoo_sample.cfg文件修改为zoo.cfg文件,并配置两个参数 dataDir=/opt/module/zookeeper-3.5.7/zkData #######################cluster########################## server.2=hadoop102:2888:3888 server.3=hadoop103:2888:3888 server.4=hadoop104:2888:3888 6.分发配置文件 7.编写群起zookeeper脚本4.Kafka
kafka的运行在2.4.1之前的版本都依赖于zookeeper,所以我们要先安装好zookeeper后,再进行kafka的安装,并且zk和kafka需要安装在相同节点上
1.解压kafka安装包
2.修改配置文件 vim /kafka/config/server.properties
修改或者增加以下内容:
#broker的全局唯一编号,不能重复
broker.id=0
#kafka运行日志存放的路径
log.dirs=/opt/module/kafka/data
#配置连接Zookeeper集群地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka
3.配置环境变量,并source
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
4.分发kafka,并且在不同节点上修改相应的broker.id
5.编写启停脚本
6.可以选择安装kafka的监控工具eagle
5.Flume
1.解压flume 2.lib文件夹下的guava-11.0.2.jar删除以兼容Hadoop 3.1.3 3.修改conf目录下的log4j.properties配置文件,配置日志文件路径 flume.log.dir=/opt/module/flume/logs 4.分发flume6.Datax
下载解压即可使用7.Maxwell
注意!!maxwell 1.30及以上版本不支持jdk1.8.0;
1.解压MaxWell
2.配置mysql Binlog日志 修改配置文件
sudo vim /etc/my.cnf
[mysqld]
#数据库id
server-id = 1
#启动binlog,该参数的值会作为binlog的文件名
log-bin=mysql-bin
#binlog类型,maxwell要求为row类型
binlog_format=row
#启用binlog的数据库,需根据实际情况作出修改
binlog-do-db=gmall
3.重启sql服务
sudo systemctl restart mysqld
4.创建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'@'%';
5.配置maxwell的配置文件config.properties.example改名为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
8.hive的安装
1.解压hive 2.配置环境变量 #HIVE_HOME export HIVE_HOME=/opt/module/hive export PATH=$PATH:$HIVE_HOME/bin 3.解决日志jar包冲突 mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bak 4.将hive的元数据配置到mysql中 4.1拷贝jdbc的驱动到hive的lib目录下 4.2新建hive-site.xml文件并配置,配置看下文 5.在mysql中新建hive的元数据库并初始化 create database metastore;(在sql中) bin/schematool -initSchema -dbType mysql -verbose(在hive目录中命令行中) 6.修改元数据字符集 use metastore; alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8; alter table TABLE_PARAMS modify column PARAM_VALUE mediumtext character set utf8; 7.使用jdbc的方式连接数据库,可以通过脚本hiveservers.sh 和jdbc.sh9.Hbase以及phoniex的安装 9.1Hbase安装部署的前置
Hbase必须依赖于zookeeper和Hadoop
9.2Hbase的安装 9.2.1解压 9.2.2配置环境变量 #Hbase_HOME
export Hbase_HOME=/opt/module/hbase
export PATH= P A T H : PATH: PATH:Hbase_HOME/bin
9.2.3修改配置文件 修改hbase-env.sh中的 export Hbase_MANAGES_ZK=false
修改hbase-site.xml的内容
hbase.rootdir hdfs://hadoop102:8020/hbase hbase.cluster.distributed true hbase.zookeeper.quorum hadoop102,hadoop103,hadoop104
修改regionservers里面输入对应的服务器节点
9.3分发hbase 9.4群体启动停止hbase命令bin/start-hbase.sh bin/stop-hbase.sh
启动成功后可以通过http://主机名:16010来访问Hbase管理页面
9.5进入客户端操作 bin/hbase shell
phoneix的安装 上传并解压jar包
复制server包并拷贝到各个节点的hbase/lib
cp /opt/module/phoenix/phoenix-5.0.0-Hbase-2.0-server.jar /opt/module/hbase/lib/
xsync /opt/module/hbase/lib/phoenix-5.0.0-Hbase-2.0-server.jar
配置环境变量
#phoenix
export PHOENIX_HOME=/opt/module/phoenix
export PHOENIX_CLASSPATH=$PHOENIX_HOME
export PATH= P A T H : PATH: PATH:PHOENIX_HOME/bin
重启Hbase
连接Phoenix
/opt/module/phoenix/bin/sqlline.py hadoop102,hadoop103,hadoop104:2181
10.scala的安装及idea的配置 10.1Scala的安装 解压scala安装包,配置环境变量,在cmd中输入scala,跳出版本号,即为安装成功
10.2idea的环境配置 10.2.1 创建正常的maven项目,点击File => Setting => plugins 选择网络安装可以使用Markerplace,但是网络不稳定,也可以下载好对应idea版本的scala环境安装包后在设置中进行加载。
10.2.2 设置完成后,右键项目名,选择add frameWorkers Support进行Scala加载,第一次配置时,需要手动选择Scala安装路径
10.2.3 右键点击main目录->New->点击Diretory -> 写个名字(比如scala)。
右键点击scala目录->Mark Directory as->选择Sources root,观察文件夹颜色变成蓝色
11.Spark的安装与配置 11.1本地模式 11.1.1解压直接测试即可bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[2] ./examples/jars/spark-examples_2.12-3.0.0.jar 1011.2standalong模式 11.2.1新解压一份安装包 11.2.2进入到conf目录下,将slaves.temple修改成slaves,并添加对应集群节点 11.2.3修改spark-env.sh文件,添加master节点
SPARK_MASTER_HOST=hadoop102 SPARK_MASTER_PORT=707711.2.4配置历史服务(可选,一般必备)
mv spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:8020/directory
需要启动Hadoop集群,确认存放的directory目录存在
hadoop fs -mkdir /directory
修改spark.env.sh文件
vim spark-env.sh
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory
-Dspark.history.retainedApplications=30"
11.2.5高可用配置(可选)
配置高可用前一定要停止集群 #注释掉如下内容: #SPARK_MASTER_HOST=hadoop102 #SPARK_MASTER_PORT=7077 #添加上如下内容。配置由Zookeeper管理Master,在Zookeeper节点中自动创建/spark目录,用于管理: export SPARK_DAEMON_JAVA_OPTS=" -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop102,hadoop103,hadoop104 -Dspark.deploy.zookeeper.dir=/spark" #添加如下代码 #Zookeeper3.5的AdminServer默认端口是8080,和Spark的WebUI冲突 export SPARK_MASTER_WEBUI_PORT=8989
注:一旦配置了高可用以后,master后面要连接多个master
bin/spark-shell --master spark://hadoop102:7077,hadoop103:7077 --executor-memory 2g --total-executor-cores 211.2.6分发spark-standalone/ 11.2.7问题的发生及解决
注意:如果遇到 “JAVA_HOME not set” 异常,可以在sbin目录下的spark-config.sh 文件中加入如下配置:
export JAVA_HOME=java家目录
11.3yarn模式(重点) 11.3.1新解压一份安装包取名为spark-yarn 11.3.2为hadoop的配置文件yarn-site.xml添加如下内容(因为测试环境虚拟机内存较少,防止执行过程进行被意外杀死,做如下配置)11.3.3修改spark-yarn的conf目录下的spark-env.sh添加YARN_CONF_DIR配置yarn.nodemanager.pmem-check-enabled false 记得分发 yarn.nodemanager.vmem-check-enabled false
YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop11.3.3配置历史服务器&配置查看历史日志
spark-default.conf文件 spark.eventLog.enabled true spark.eventLog.dir hdfs://hadoop102:8020/directory 查看历史日志配置 spark.yarn.historyServer.address=hadoop102:18080 spark.history.ui.port=18080 spark-env.sh文件 export SPARK_HISTORY_OPTS=" -Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory -Dspark.history.retainedApplications=30"11.3.4异常问题及解决
ClassNotFoundException:com.sun.jersey.api.client.config.ClientConfig
-原因分析:Spark2中jersey版本是2.22,但是yarn中还需要依赖1.9,版本不兼容 -解决方式:在yarn-site.xml中,添加11.4mesos模式yarn.timeline-service.enabled false
Spark客户端直接连接Mesos;不需要额外构建Spark集群。国内应用比较少,更多的是运用Yarn调度
12.hive on Spark 12.1兼容性说明注意:官网下载的Hive3.1.2和Spark3.0.0默认是不兼容的。因为Hive3.1.2支持的Spark版本是2.4.5,所以需要我们重新编译Hive3.1.2版本。
编译步骤:官网下载Hive3.1.2源码,修改pom文件中引用的Spark版本为3.0.0,如果编译通过,直接打包获取jar包。如果报错,就根据提示,修改相关方法,直到不报错,打包获取jar包。
12.2在Hive节点上部署Spark 12.2.1Spark官网下载jar包地址:http://spark.apache.org/downloads.html12.2.2上传,解压Spark并配置环境变量
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module/ mv /opt/module/spark-3.0.0-bin-hadoop3.2 /opt/module/spark # SPARK_HOME export SPARK_HOME=/opt/module/spark export PATH=$PATH:$SPARK_HOME/bin 记得source12.2.3在hive中创建Spark配置文件
vim /opt/module/hive/conf/spark-defaults.conf 添加如下内容 spark.master yarn spark.eventLog.enabled true spark.eventLog.dir hdfs://hadoop102:8020/spark-history spark.executor.memory 1g spark.driver.memory 1g
在hdfs创建如下路径,用户存储历史日志(和上述spark.eventLog.dir参数内容一致)
hadoop fs -mkdir /spark-history12.2.4向HDFS上传spark纯净版jar包
说明1:由于Spark3.0.0非纯净版默认支持的是hive2.3.7版本,直接使用会和安装的Hive3.1.2出现兼容性问题。所以采用Spark纯净版jar包,不包含hadoop和hive相关依赖,避免冲突。
说明2:Hive任务最终由Spark来执行,Spark任务资源分配由Yarn来调度,该任务有可能被分配到集群的任何一个节点。所以需要将Spark的依赖上传到HDFS集群路径,这样集群中任何一个节点都能获取到。
上传并解压spark-3.0.0-bin-without-hadoop.tgz
tar -zxvf /opt/software/spark-3.0.0-bin-without-hadoop.tgz
上传jar包至HDFS上
hadoop fs -mkdir /spark-jars hadoop fs -put spark-3.0.0-bin-without-hadoop/jars/* /spark-jars
修改hive-site.xml配置文件
12.2.5测试spark.yarn.jars hdfs://hadoop102:8020/spark-jars/* hive.execution.engine spark
启动hive,执行sql出现spark-job即为成功
12.3Yarn环境配置 12.3.1增加ApplicationMaster资源比例系统资源不足时适当调整
在hadoop102的/opt/module/hadoop-3.1.3/etc/hadoop/capacity-scheduler.xml文件中修改如下参数值
13.DS调度器安装与配置 13.1DS安装规划集群模式下,可配置多个Master及多个Worker。通常可配置2~3个Master,若干个Worker。
13.2前置准备工作1)每台节点均需部署JDK(1.8+),并配置相关环境变量。
2)需部署数据库,支持MySQL(5.7+)或者PostgreSQL(8.2.15+)。
3)需部署Zookeeper(3.4.6+)。
4)每台节点均需安装进程管理工具包psmisc。
sudo yum install -y psmisc13.3解压DolphinScheduler安装包
1)上传DolphinScheduler安装包到hadoop102节点的/opt/software目录
2)解压安装包到当前目录
注:解压目录并非最终的安装目录
13.4初始化数据库 13.4.1DolphinScheduler 元数据存储在关系型数据库中,故需创建相应的数据库和用户。--创建数据库 CREATE DATAbase dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; --创建用户 CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler'; --赋予权限 GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%'; flush privileges;13.4.2修改数据源配置文件
进入DS解压目录,修改conf目录下的datasource.properties文件
vim /opt/software/apache-dolphinscheduler-1.3.9-bin/conf/datasource.properties --修改内容如下 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://主机名:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8 spring.datasource.username=dolphinscheduler spring.datasource.password=dolphinscheduler13.4.3拷贝MySQL驱动到DolphinScheduler的解压目录下的lib中
cp /opt/software/mysql-connector-java-5.1.27-bin.jar lib/13.4.4执行数据库初始化脚本
数据库初始化脚本位于DolphinScheduler解压目录下的script目录中,即/opt/software /apache-dolphinscheduler-1.3.9-bin/script/。
script/create-dolphinscheduler.sh13.5配置一键部署脚本
修改解压目录下的conf/config目录下的install_config.conf文件
修改内容如下:
# postgresql or mysql dbtype="mysql" # db config # db address and port dbhost="hadoop102:3306" # db username username="dolphinscheduler" # database name dbname="dolphinscheduler" # db passwprd # NOTICE: if there are special characters, please use the to escape, for example, `[` escape to `[` password="dolphinscheduler" # zk cluster zkQuorum="hadoop102:2181,hadoop103:2181,hadoop104:2181" # Note: the target installation path for dolphinscheduler, please not config as the same as the current path (pwd) installPath="/opt/module/dolphinscheduler" # deployment user # Note: the deployment user needs to have sudo privileges and permissions to operate hdfs. If hdfs is enabled, the root directory needs to be created by itself deployUser="atguigu" # resource storage type: HDFS, S3, NONE resourceStorageType="HDFS" # resource store on HDFS/S3 path, resource file will store to this hadoop hdfs path, self configuration, please make sure the directory exists on hdfs and have read write permissions. "/dolphinscheduler" is recommended resourceUploadPath="/dolphinscheduler" # if resourceStorageType is HDFS,defaultFS write namenode address,HA you need to put core-site.xml and hdfs-site.xml in the conf directory. # if S3,write S3 address,HA,for example :s3a://dolphinscheduler, # Note,s3 be sure to create the root directory /dolphinscheduler defaultFS="hdfs://hadoop102:8020" # resourcemanager port, the default value is 8088 if not specified resourceManagerHttpAddressPort="8088" # if resourcemanager HA is enabled, please set the HA IPs; if resourcemanager is single, keep this value empty yarnHaIps= # if resourcemanager HA is enabled or not use resourcemanager, please keep the default value; If resourcemanager is single, you only need to replace ds1 to actual resourcemanager hostname singleYarnIp="hadoop103" # who have permissions to create directory under HDFS/S3 root path # Note: if kerberos is enabled, please config hdfsRootUser= hdfsRootUser="atguigu" # api server port apiServerPort="12345" # install hosts # Note: install the scheduled hostname list. If it is pseudo-distributed, just write a pseudo-distributed hostname ips="hadoop102,hadoop103,hadoop104" # ssh port, default 22 # Note: if ssh port is not default, modify here sshPort="22" # run master machine # Note: list of hosts hostname for deploying master masters="hadoop102" # run worker machine # note: need to write the worker group name of each worker, the default value is "default" workers="hadoop102:default,hadoop103:default,hadoop104:default" # run alert machine # note: list of machine hostnames for deploying alert server alertServer="hadoop102" # run api machine # note: list of machine hostnames for deploying api server apiServers="hadoop102"14.Superset安装与配置 14.1安装python环境
Superset是由Python语言编写的Web应用,要求Python3.7的环境。
14.1.1安装Minicondaconda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同Python版本的软件包及其依赖,并能够在不同的Python环境之间切换,Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等,Miniconda包括Conda、Python。
1)安装Miniconda
(1)执行以下命令进行安装,并按照提示操作,直到安装完成。
[atguigu@hadoop102 lib]$ bash Miniconda3-latest-Linux-x86_64.sh
(2)加载环境变量配置文件,使其生效
source ~/.bashrc
2)取消激活base环境
Miniconda安装完成后,每次打开终端都会激活其默认的base环境,我们可通过以下命令,禁止激活默认base环境。
[atguigu@hadoop102 lib]$ conda config --set auto_activate_base false14.2创建Python3.7环境
2)创建Python3.7环境
(base) [atguigu@hadoop102 ~]$ conda create --name superset python=3.7
说明:conda环境管理常用命令
**创建环境:**conda create -n env_name
**查看所有环境:**conda info --envs
**删除一个环境:**conda remove -n env_name --all
3)激活superset环境
(base) [atguigu@hadoop102 ~]$ conda activate superset
说明:退出当前环境
(superset) [atguigu@hadoop102 ~]$ conda deactivate
4)执行python命令查看python版本
14.3Superset部署 14.3.1 安装依赖安装Superset之前,需安装以下所需依赖
(superset) [atguigu@hadoop102 ~]$ sudo yum install -y gcc gcc-c++ libffi-devel python-devel python-pip python-wheel python-setuptools openssl-devel cyrus-sasl-devel openldap-devel14.3.2 安装Superset
1)安装(更新)setuptools和pip
(superset) [atguigu@hadoop102 ~]$ pip install --upgrade setuptools pip -i https://pypi.douban.com/simple/
**说明:**pip是python的包管理工具,可以和centos中的yum类比
2)安装Supetset
(superset) [atguigu@hadoop102 ~]$ pip install apache-superset -i https://pypi.douban.com/simple/
说明:-i的作用是指定镜像,这里选择国内镜像
注:如果遇到网络错误导致不能下载,可尝试更换镜像
(superset) [atguigu@hadoop102 ~]$ pip install apache-superset --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple
3)初始化Supetset数据库
(superset) [atguigu@hadoop102 ~]$ superset db upgrade
4)创建管理员用户
(superset) [atguigu@hadoop102 ~]$ export FLASK_APP=superset (superset) [atguigu@hadoop102 ~]$ superset fab create-admin
**说明:**flask是一个python web框架,Superset使用的就是flask
5)Superset初始化
(superset) [atguigu@hadoop102 ~]$ superset init14.3.3 启动Supterset
1)安装gunicorn
(superset) [atguigu@hadoop102 ~]$ pip install gunicorn -i https://pypi.douban.com/simple/ **说明:**gunicorn是一个Python Web Server,可以和java中的TomCat类比
2)启动Superset
(1)确保当前conda环境为superset
(2)启动
(superset) [atguigu@hadoop102 ~]$ gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 "superset.app:create_app()" --daemon
3)停止superset
停掉gunicorn进程
(superset) [atguigu@hadoop102 ~]$ ps -ef | awk ‘/superset/ && !/awk/{print $2}’ | xargs kill -9
14.4 superset启停脚本创建文件
vim superset.sh
脚本内容如下
#!/bin/bash
superset_status(){
result=`ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | wc -l`
if [[ $result -eq 0 ]]; then
return 0
else
return 1
fi
}
superset_start(){
source ~/.bashrc
superset_status >/dev/null 2>&1
if [[ $? -eq 0 ]]; then
conda activate superset ; gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 --daemon 'superset.app:create_app()'
else
echo "superset正在运行"
fi
}
superset_stop(){
superset_status >/dev/null 2>&1
if [[ $? -eq 0 ]]; then
echo "superset未在运行"
else
ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | xargs kill -9
fi
}
case $1 in
start )
echo "启动Superset"
superset_start
;;
stop )
echo "停止Superset"
superset_stop
;;
restart )
echo "重启Superset"
superset_stop
superset_start
;;
status )
superset_status >/dev/null 2>&1
if [[ $? -eq 0 ]]; then
echo "superset未在运行"
else
echo "superset正在运行"
fi
esac
14.5对接mysql数据源
(superset) [atguigu@hadoop102 ~]$ conda install mysqlclient
安装完毕后需要重启superset



