数仓项目环境搭建
目录
一、安装CentOS
1.1、修改映射关系:
1.2、免密登录:
1.3、关闭防⽕墙:
1.4、修改linux的安全机制:
1.5、修改yum源:
二、安装JDK
2.1、创建文件夹:
2.2、解压安装:
2.3、配置环境变量:
2.4、刷新环境变量:
2.5、验证:
三、安装Hadoop[伪分布式]
3.1、安装hdfs:
3.2、修改配置:
3.3、安装Yarn:
四、安装MySQL8.0
4.1、删除mysql相关的内容
4.2、上传解压
4.3、安装服务
4.4、服务启动
4.5、修改密码
4.6、远程授权:
4.7、自动化安装脚本:
五、安装Hive
5.1、修改为本地模式
5.2、配置环境变量
5.3、修改配置文件
六、安装Flume、DataX和SQOOP
6.1、解压、重命名
6.2、配置环境变量
6.3、修改配置文件
6.4、拷贝mysql8.0的驱动包
七、安装DS[单机版]
7.1、上传,解压
7.2、拷贝mysql8.0的驱动包
7.3、在mysql中创建数据库
八、总结
搭建数仓项目环境是数据工程师工作的重要组成部分,它确保数据从源头到数据仓库的采集、清洗、存储、分析等环节高效稳定。以下是如何搭建一个典型数仓项目环境的详细指南:
安装所需的安装包(飞书):软件安装包
一、安装CentOS
1.1、修改映射关系:
vi /etc/hosts
1.2、免密登录:
ssh-keygen -t rsa
ssh-copy-id shucang
1.3、关闭防⽕墙:
systemctl stop firewalld
systemctl disable firewalld
1.4、修改linux的安全机制:
vi /etc/selinux/config
# 修改文件⾥⾯ SELINUX=disabled
1.5、修改yum源:
#修改阿里云的镜像文件:
1、cd /etc/yum.repos.d/
2、备份⼀下:mv CentOS-Base.repo CentOS-Base.repo.bak
3、下载阿⾥云镜像到本地:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
4、清除yum的缓存 yum clean all yum makecache
5、安装 yum install -y ntpdate yum install -y vim yum install -y net-tools
二、安装JDK
2.1、创建文件夹:
mkdir -p /opt/modules
mkdir -p /opt/installs
2.2、解压安装:
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /opt/installs/ mv jdk1.8.0_171/ jdk
2.3、配置环境变量:
export JAVA_HOME=/opt/installs/jdk
export PATH=$PATH:$JAVA_HOME/bin
2.4、刷新环境变量:
source /etc/profile
2.5、验证:
java -version
三、安装Hadoop[伪分布式]
3.1、安装hdfs:
tar -zxvf hadoop-3.3.1.tar.gz -C /opt/installs/
mv hadoop-3.3.1/ hadoop
#环境变量:
export HADOOP_HOME=/opt/installs/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#刷新环境变量 source /etc/profile
#验证: hadoop version
3.2、修改配置:
1、修改core-site.xml
<configuration>
<!-- 设置namenode节点 -->
<!-- 注意: hadoop1.x时代默认端⼝9000 hadoop2.x时代默认端⼝8020 hadoop3.x时 代默认端⼝ 9820 --> <property>
<name>fs.defaultFS</name>
<value>hdfs://shucang:9820</value>
</property>
<!-- hdfs的基础路径,被其他属性所依赖的⼀个基础路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/installs/hadoop/tmp</value>
</property>
</configuration>
2、修改hdfs-site.xml
<configuration>
<property>
<!--备份数量-->
<name>dfs.replication</name>
<value>1</value>
</property>
<!--secondarynamenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>shucang:9868</value>
</property>
<!-- namenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
<property>
<name>dfs.namenode.http-address</name>
<value>shucang:9870</value>
</property>
</configuration>
3、修改hadoop-env.sh
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export JAVA_HOME=/opt/installs/jdk
4、修改workers 文件
shucang
5、格式化namenode
hdfs namenode -format
3.3、安装Yarn:
1、修改mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
#指定mapreduce运行平台为yarn
2、检查hadoop-env.sh
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
3、配置yarn-site.xml
为了防止报AppMaster的错误,需要如下配置:
<property>
<name>yarn.application.classpath</name>
<value>/opt/installs/hadoop/etc/hadoop:/opt/installs/hadoop/share/hadoop/common/lib/*:/opt/installs/hadoop/share/hadoop/common/*:/opt/installs/hadoop/share/hadoop/hdfs:/opt/installs/hadoop/share/hadoop/hdfs/lib/*:/opt/installs/hadoop/share/hadoop/hdfs/*:/opt/installs/hadoop/share/hadoop/mapreduce/*:/opt/installs/hadoop/share/hadoop/yarn:/opt/installs/hadoop/share/hadoop/yarn/lib/*:/opt/installs/hadoop/share/hadoop/yarn/*</value>
</property>
获取classpath的值:
hadoop classpath
4、启动和停止yarn平台:
#启动
start-yarn.sh
#停止
stop-yarn.sh
5、web访问一下:
http://shucang:8088
四、安装MySQL8.0
4.1、删除mysql相关的内容
rpm -qa | grep mariadb
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
4.2、上传解压
mkdir /opt/modules/mysql_rpm
tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C /opt/modules/mysql_rpm
4.3、安装服务
rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm
yum install -y net-tools
yum install -y perl
yum install libaio
rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm
4.4、服务启动
systemctl start mysqld #这个是启动
mysql systemctl status mysqld #查看mysql的状态
systemctl stop mysqld #关闭服务
4.5、修改密码
#查看默认密码
grep password /var/log/mysqld.log
进入mysql:
mysql -uroot -p 敲回车 粘贴密码即可
修改密码:
alter user root@localhost identified by 'Y1u2n3h4e5!';
修改密码校验规则:
show variables like '%validate_password%'; # 查看密码策略
set global validate_password.policy=LOW; # 修改密码策略等级为LOW
set global validate_password.length=4; # 密码的最小长度 set global validate_password.mixed_case_count=0; # 设置密码中至少要包含0个大写字母和小写字母
set global validate_password.number_count=0; # 设置密码中至少要包含0个数字
set global validate_password.special_char_count=0; # 设置密码中至少要包含0个特殊字符
再次修改密码:
alter user root@localhost identified by '123456';
4.6、远程授权:
create user 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
4.7、自动化安装脚本:
#!/bin/bash
####################################
# 1.建立临时文件夹
# 2.tar文件 ,与此脚本放同一目录
# 3.删除centos7自带的MySQL
# 4.按顺序安装MySQL相关的依赖包
# 5.修改MySQL的密码 -- 默认使用密码为123456
# 6.配置MySQL可以被远程访问(实际开发中也是,有些机器需要有访问这个机器MySQL的权限)
# 7.开放3306端口,提供远程访问 # $? => 代表上一个命令执行后的退出状态: 0->成功,1->失败 # example => sh mysql8.0.26.sh
####################################
# echo -e "\e[1;32m****\e[0m" # 安装vim yum install -y vim
#第一步、创建一个临时的文件夹
mkdir mysql_rpm
#第二步、把新上传的MySQL的安装包移动到mysql_rpm下
mv mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar mysql_rpm
#进入到mysql_rpm目录下,开始执行下面的操作
cd mysql_rpm
#解压MySQL的安装包,在当前目录下
tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar
#查看集群上现有的MySQL,需要删除掉
mysql_old=`rpm -qa | grep mariadb` echo -e "\e[1;32m当前centos中MySQL版本是: ${mysql_old}\e[0m"
#删除自带的MySQL
rpm -e --nodeps ${mysql_old}
#验证旧版本的MySQL是否被删除掉
mysql_validate=`rpm -qa | grep mariadb` echo -e "\e[1;32m验证旧版的MySQL是否被删除干净: ${mysql_validate}\e[0m"
#开始安装MySQL,注意:这些包安装是有顺序的
rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm
#判断安装的过程是否成功
if [ $? == 0 ];then
echo -e "\e[1;32m安装------mysql-community-common-8.0.26-1.el7.x86_64.rpm -- 第1个包------- 成功\e[0m"
else
echo -e "\e[1;31m安装------mysql-community-common-8.0.26-1.el7.x86_64.rpm -- 第1个包------- 失败\e[0m"
fi
#第二个包
rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm
if [ $? == 0 ];then
echo -e "\e[1;32m安装------mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm -- 第2个包------- 成功\e[0m"
else
echo -e "\e[1;31m安装------mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm -- 第2个包------- 失败\e[0m"
fi
#第三个包:安装rpm -ivh numactl* 这是安装以前缀numactl开始的所有安装包
rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm
if [ $? == 0 ];then
echo -e "\e[1;32m安装------mysql-community-libs-8.0.26-1.el7.x86_64.rpm -- 第3个包------- 成功\e[0m"
else
echo -e "\e[1;31m安装------mysql-community-libs-8.0.26-1.el7.x86_64.rpm -- 第3个包------- 失败\e[0m"
fi
#第四个包:安装mysql-community-client-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm
if [ $? == 0 ];then
echo -e "\e[1;32m安装------mysql-community-client-8.0.26-1.el7.x86_64.rpm 第4个包------- 成功\e[0m"
else
echo -e "\e[1;31m安装------mysql-community-client-8.0.26-1.el7.x86_64.rpm 第4个包------- 失败\e[0m"
fi
yum install -y net-tools
yum install -y perl
yum install libaio
#第五个包:安装 mysql-community-server-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm
if [ $? == 0 ];then
echo -e "\e[1;32m安装------mysql-community-server-8.0.26-1.el7.x86_64.rpm -- 第5个包------- 成功\e[0m"
else
echo -e "\e[1;31m安装------mysql-community-server-8.0.26-1.el7.x86_64.rpm -- 第5个包------- 失败\e[0m"
fi
#启动MySQL
# service mysqld start
systemctl start mysqld
#验证是否启动成功可以查看MySQL的启动状态
service mysqld status >start.log
#查看MySQL的初始密码,把携带密码信息加载到下面这个文件中
grep 'temporary password' /var/log/mysqld.log >result.txt
#读取文件中的密码,用于登录MySQL
password_mysql=`cat result.txt | grep 'localhost' | awk -F ': ' '{print $2}'`
echo -e "\e[1;32m查看MySQL的原始密码是啥 \e[0m --> \e[1;31m ${password_mysql}\e[0m"
#连接MySQL的几个参数
hostname="localhost"
username="root"
port="3306"
#进入MySQL的交互模式,修改相应的参数,设置简单的密码为123456,为了以后自己用方便,实际上生产的密码都比较复杂一些
#mysql -h${hostname} -u${username} -P${port} -p${password_mysql} <<EOF
mysql -u${username} -p${password_mysql} --connect-expired-password <<EOF
set global validate_password.policy=LOW;
set global validate_password.length=4;
set global validate_password.mixed_case_count=0;
set global validate_password.number_count=0;
set global validate_password.special_char_count=0;
alter user root@localhost identified by '123456';
create user 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
quit EOF
# 防火墙开启状态下,开放3306端口
# openPort(){ # echo -e "\e[1;32m开放3306端口"
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
# echo -e "\e[1;32m重启firewall..."
# firewall-cmd --reload # } # openPort
五、安装Hive
5.1、修改为本地模式
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/installs/
mv apache-hive-3.1.2-bin/ hive
5.2、配置环境变量
export HIVE_HOME=/opt/installs/hive
export PATH=$PATH:$HIVE_HOME/bin
#刷新环境变量
source /etc/profile
5.3、修改配置文件
mv hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
hive-env.sh
export HIVE_CONF_DIR=/opt/installs/hive/conf
export JAVA_HOME=/opt/installs/jdk
export HADOOP_HOME=/opt/installs/hadoop
export HIVE_AUX_JARS_PATH=/opt/installs/hive/lib
export HADOOP_HEAPSIZE=4096
hive-site.xml
将以前的设置全部删除
<!--配置MySql的连接字符串-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description>
</property>
<!--配置MySql的连接驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<!--配置登录MySql的用户-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<!--配置登录MySql的密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
<!-- 以下两个不需要修改,只需要了解即可 -->
<!-- 该参数主要指定Hive的数据存储目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- 该参数主要指定Hive的临时文件存储目录 -->
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
</property>
<!--Hive工作的本地临时存储空间-->
<property>
<name>hive.exec.local.scratchdir</name>
<value>/opt/installs/hive/iotmp/root</value>
</property>
<!--如果启用了日志功能,则存储操作日志的顶级目录-->
<property>
<name>hive.server2.logging.operation.log.location</name> <value>/opt/installs/hive/iotmp/root/operation_logs</value>
</property>
<!--Hive运行时结构化日志文件的位置-->
<property> <name>hive.querylog.location</name> <value>/opt/installs/hive/iotmp/root</value>
</property>
<!--用于在远程文件系统中添加资源的临时本地目录-->
<property>
<name>hive.downloaded.resources.dir</name> <value>/opt/installs/hive/iotmp/${Hive.session.id}_resources</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>shucang</value>
<description>Bind host on which to run the HiveServer2 Thrift service.</description> </property>
<property>
<name>hive.server2.thrift.port</name> <value>10000</value>
<description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.</description>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://shucang:9083</value>
</property>
5、创建各种目录和文件夹
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -mkdir -p /tmp/hive/
hdfs dfs -chmod 750 /user/hive/warehouse
hdfs dfs -chmod 777 /tmp/hive cd /opt/installs/hive/
mkdir iotmp chmod 777 iotmp
拷贝驱动包到lib
core-site.xml[hadoop]
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 不开启权限检查 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
格式化元数据
schematool --initSchema -dbType mysql
启用元数据 metastore
-- 拷贝一个脚本
hive-service-manager.sh
cd /usr/local/bin chmod 777
hive-server-manager.sh
hive-service-manager.sh
#!/bin/bash
# hive 服务控制脚本,可以控制 Hive 的 metastore 和 hiveserver2 服务的启停
# 使用方式: hive-server-manager.sh [start|stop|status] [metastore|hiveserver2]
# - start : 一键开启metastore和hiveserver2服务,也可以指定服务开启
# - stop : 一键停止metastore和hiveserver2服务,也可以指定服务停止
# - status : 一键查看metastore和hiveserver2服务,也可以指定服务查看
help_info() {
echo "+--------------------------------------------------------------------------------+"
echo "| 本脚本可以一键控制 Hive 的 metastore 和 hiveserver2 服务 |"
echo "| 使用方式: hive-server-manager.sh [start|stop|status] [metastore|hiveserver2] |" echo "+--------------------------------------------------------------------------------+"
echo "| 第一个参数用来指定操作命令,可以选择 开始(start)、停止(stop)、状态查看(status) |"
echo "| 第二个参数用来指定操作的服务,可以选择 metastore、hiveserver2,默认为全部 |"
echo "+--------------------------------------------------------------------------------+"
echo "| - start : 一键开启metastore和hiveserver2服务,也可以指定服务开启 |"
echo "| - stop : 一键停止metastore和hiveserver2服务,也可以指定服务停止 |"
echo "| - status : 一键查看metastore和hiveserver2服务,也可以指定服务查看 |"
echo "+--------------------------------------------------------------------------------+" exit -1
}
# 获取操作命令
op=$1
# 获取操作的服务
server=$2
# 检查参数是否正确
if [ ! $op ]; then
help_info
elif [ $op != "start" -a $op != "stop" -a $op != "status" ]; then
help_info
fi
# 检查进程状态
metastore_pid=`ps aux | grep org.apache.hadoop.hive.metastore.HiveMetaStore | grep -v grep | awk '{print $2}'`
hiveserver2_pid=`ps aux | grep proc_hiveserver2 | grep -v grep | awk '{print $2}'`
# 检查日志文件夹的存在情况,如果不存在则创建这个文件夹 log_dir=/var/log/my_hive_log
if [ ! -e $log_dir ]; then
mkdir -p $log_dir
fi
# 开启服务
start_metastore() {
# 检查是否开启,如果未开启,则开启 metastore 服务
if [ $metastore_pid ]; then
echo "metastore 服务已经开启,进程号: $metastore_pid,已跳过"
else
nohup hive --service metastore >> $log_dir/metastore.log 2>&1 & echo "metastore 服务已经开启,日志输出在 $log_dir/metastore.log"
fi
}
start_hiveserver2() {
# 检查是否开启,如果未开启,则开启 hiveserver2 服务
if [ $hiveserver2_pid ]; then
echo "hiveserver2 服务已经开启,进程号: $hiveserver2_pid,已跳过"
else
nohup hive --service hiveserver2 >> $log_dir/hiveserver2.log 2>&1 & echo "hiveserver2 服务已经开启,日志输出在 $log_dir/hiveserver2.log"
fi
}
# 停止服务
stop_metastore() {
if [ $metastore_pid ]; then
kill -9 $metastore_pid fi echo "metastore 服务已停止"
}
stop_hiveserver2() {
if [ $hiveserver2_pid ]; then
kill -9 $hiveserver2_pid
fi
echo "hiveserver2 服务已停止"
}
# 查询服务
status_metastore() {
if [ $metastore_pid ]; then
echo "metastore 服务已开启,进程号: $metastore_pid"
else
echo "metastore 服务未开启"
fi
}
status_hiveserver2() {
if [ $hiveserver2_pid ]; then echo "hiveserver2 服务已开启,进程号: $hiveserver2_pid"
else
echo "hiveserver2 服务未开启"
fi
}
# 控制操作
if [ ! $server ]; then
${op}_metastore ${op}_hiveserver2
elif [ $server == "metastore" ]; then
${op}_metastore
elif [ $server == "hiveserver2" ]; then
${op}_hiveserver2
else
echo "服务选择错误"
help_info
fi
设置远程连接
hive-server-manager.sh start
六、安装Flume、DataX和SQOOP
6.1、解压、重命名
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt/installs/
mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop#也可以使用如下命令:--strip-components 1 解压后获取一层里面的内容
mkdir /opt/installs/sqoop && tar -xzvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt/installs/sqoop --strip-components 1
6.2、配置环境变量
export SQOOP_HOME=/opt/installs/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
#刷新环境变量
source /etc/profile
6.3、修改配置文件
cp sqoop-env-template.sh sqoop-env.shvi sqoop-env.sh
export HADOOP_COMMON_HOME=/opt/installs/hadoop
export HADOOP_MAPRED_HOME=/opt/installs/hadoop
export HIVE_HOME=/opt/installs/hive
6.4、拷贝mysql8.0的驱动包
cp /opt/installs/hive/lib/mysql-connector-java-8.0.26.jar /opt/installs/sqoop/lib/
七、安装DS[单机版]
7.1、上传,解压
tar -zxvf apache-dolphinscheduler-3.1.8-bin.tar.gz -C /opt/installs/
mv apache-dolphinscheduler-3.1.8-bin dolphinscheduler
7.2、拷贝mysql8.0的驱动包
cd /opt/installs/dolphinschedulercp /opt/installs/hive/lib/mysql-connector-java-8.0.26.jar ./api-server/libs/
cp /opt/installs/hive/lib/mysql-connector-java-8.0.26.jar ./alert-server/libs/
cp /opt/installs/hive/lib/mysql-connector-java-8.0.26.jar ./master-server/libs/
cp /opt/installs/hive/lib/mysql-connector-java-8.0.26.jar ./worker-server/libs/
cp /opt/installs/hive/lib/mysql-connector-java-8.0.26.jar ./tools/libs/
cp /opt/installs/hive/lib/mysql-connector-java-8.0.26.jar ./standalone-server/libs/standalone-server/
7.3、在mysql中创建数据库
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
在Linux黑窗口运行:
export DATABASE=mysql
export SPRING_PROFILES_ACTIVE=dolphinscheduler
export SPRING_DATASOURCE_URL="jdbc:mysql://shucang:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true"
export SPRING_DATASOURCE_USERNAME=root
export SPRING_DATASOURCE_PASSWORD=123456
初始化数据库:
bash tools/bin/upgrade-schema.sh
修改配置文件:/opt/installs/dolphinscheduler/standalone-server/conf
修改 DolphinScheduler 的配置
在 DolphinScheduler 的安装目录下找到 conf/application.yaml 文件。
将其中关于数据库连接的部分修改为指向你的 MySQL 实例,包括用户名、密码、数据库名等信息。以下是修改后的示例:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://shucang:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: 123456
如何启动和关闭单机版:
注意: Standalone 仅建议 20 个以下工作流使用,因为其采用内存式的 H2 Database, Zookeeper Testing Server,任务过多可能导致不稳定,并且如果重启或者停止 standalone-server 会导致内存中数据库里的数据清空。 如何启动和关闭单机版:
# 启动 Standalone Server 服务
bash ./bin/dolphinscheduler-daemon.sh start standalone-server
# 停止 Standalone Server 服务
bash ./bin/dolphinscheduler-daemon.sh stop standalone-server
# 查看 Standalone Server 状态
bash ./bin/dolphinscheduler-daemon.sh status standalone-server
单机模式比较省内存:
访问地址:http://shucang:12345/dolphinscheduler/ui
账号和密码: admin dolphinscheduler123
问题:上传资源提示 存储未启用 如何开启HDFS
这个软件下面有很多的服务,将每一个服务下的common.properties中的内容全部修改一遍,最后重启服务
#修改所有组件下的common.propertiesresource.storage.type=HDFS
resource.storage.upload.base.path=/dolphinscheduler
resource.hdfs.fs.defaultFS=hdfs://shucang:9820#修改hdfs的权限:
hdfs dfs -chmod 777 /
八、总结
搭建数仓项目环境涉及多个组件和工具的安装与配置,每个步骤都至关重要。本文介绍了从JDK安装、Hadoop、Hive的搭建,到数据采集工具Flume、数据同步工具DataX以及调度工具DS的完整流程。通过这些工具的协同工作,可以实现高效稳定的数据仓库环境。
相关文章:
数仓项目环境搭建
目录 一、安装CentOS 1.1、修改映射关系: 1.2、免密登录: 1.3、关闭防⽕墙: 1.4、修改linux的安全机制: 1.5、修改yum源: 二、安装JDK 2.1、创建文件夹: 2.2、解压安装: 2.3、配置环境变量: 2.4、刷新环境变量: 2.5、验证: 三、安装Hadoop[伪分布式] 3.1、安装hd…...
Vue3(二)计算属性Computed,监视属性watch,watchEffect,标签的ref属性,propos属性,生命周期,自定义hook
文章目录 一 、计算属性1. 简写2. 完整写法 二、监视watch1. 监视【ref】定义的【基本类型】数据2. 监视【ref】定义的【对象类型】数据3. 监视【reactive】定义的【对象类型】数据4. 监视【ref】或【reactive】定义的【对象类型】数据中的某个属性5. 监视多个数据总结 三、wat…...
栈:只允许在一端进行插入或删除操作的线性表
一、重要术语: 栈顶、栈底、空栈 二、线性表的基本操作 三、栈的相关操作: 把线性表中的list改成stack insert改成 push delete 改成 pop 总结:“后进先出” 四、顺序栈: 缺点:栈的大小不可变 1.定义: …...
spring boot 热部署
热部署的主要作用是在服务器运行的时候可以在不关闭服务器的情况下修改代码 可以很大的提高开发效率 热部署的步骤很简单 首先,需要在 pom.xml 文件中引入热部署需要的依赖 <dependency><groupId>org.springframework.boot</groupId><artif…...
携手阿里云CEN:共创SD-WAN融合广域网
在9月19日举行的阿里云云栖大会上,犀思云作为SD-WAN领域的杰出代表及阿里云的SD-WAN重要合作伙伴,携手阿里云共同推出了创新的企业上云方案——Fusion WAN智连阿里云解决方案。这一创新方案不仅彰显了犀思云在SD-WAN技术领域的深厚积累,更体现…...
kettle从入门到精通 第八十七课 ETL之kettle kettle文件上传
1、kettle本身文件上传功能不是很友好,甚至是不能直接使用,需要调整文件上传接口才可以正常接收到文件,本次讲解内容主要是通过自定义插件解决这个问题。 2、通过springboot 编写简单demo,模拟文件上传,接口支持三个参…...
Algo-Lab 2 Stack Queue ADT
Lab 2: Stack & Queue ADT Part 1 这里只说一下最小栈的思路,我们可以在定义一个栈,来同步存储当前情况下的占的最小值。最小栈第一时间的想法可能是设定一个变量,每次push进来栈中的元素进行对比,保持最小值,…...
MySQL索引详解
前言 在数据库管理中,索引是提高数据检索速度的重要工具。MySQL作为流行的关系型数据库管理系统,提供了多种类型的索引来优化查询性能。本文将深入探讨MySQL索引的工作原理、类型、创建方法以及最佳实践。 索引简介 MySQL中的索引是一种数据库对象&am…...
fastadmin 根据选择数据来传参给selectpage输入框
文章目录 js代码php代码:完结 js代码 $(document).on(change,#table .bs-checkbox [type"checkbox"],function(){let url$(#chuancan).attr(data-url)urlurl.split(?)[0]let idsTable.api.selectedids(table)if(ids.length){let u_id[]ids.forEach(eleme…...
【算法】堆与优先级队列
【ps】本篇有 4 道 leetcode OJ。 目录 一、算法简介 二、相关例题 1)最后一块石头的重量 .1- 题目解析 .2- 代码编写 2)数据流中的第 K 大元素 .1- 题目解析 .2- 代码编写 3)前K个高频单词 .1- 题目解析 .2- 代码编写 4…...
Java基础尚硅谷85-面向对象特征一:封装性
曾国藩说,基础不牢,很难走得远。 所以时时回顾一下Java基础,打好地基,让自己走得更稳,更远。 今天这节课,学到对自己有点价值的东西是: 为什么要封装?保护数据安全。只对外暴露极少…...
828华为云征文 | 将Vue项目部署到Flexus云服务器X实例并实现公网访问
一、Flexus云服务器X实例简介 1.1 概述 华为云Flexus X实例是华为云推出的一款创新云服务器产品,它主要面向中小企业和开发者,旨在解决传统云服务中的痛点,提供更加灵活、高效的云服务体验。 华为深刻洞察了中小企业和开发者在云服务应用中遇…...
828华为云征文|华为云Flexus云服务器X实例部署Xnote笔记应用
828华为云征文|华为云Flexus云服务器X实例部署Xnote笔记应用 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、Note Mark 介绍2.1 Xnote简介2.2 Xnote特点2.3 主要使用场景 三、本次实…...
手写数字识别案例分析(torch,深度学习入门)
在人工智能和机器学习的广阔领域中,手写数字识别是一个经典的入门级问题,它不仅能够帮助我们理解深度学习的基本原理,还能作为实践编程和模型训练的良好起点。本文将带您踏上手写数字识别的深度学习之旅,从数据集介绍、模型构建到…...
应用密码学第一次作业(9.23)
一、Please briefly describe the objectives of information and network security,such as confidentiality, integrity, availability , authenticity , and accountability The objectives of information and network security include: Confidentiality: Protecting se…...
JSON合并工具
JSON合并工具 1. 项目概述 本项目旨在开发一个强大而灵活的JSON合并工具,能够合并多个JSON文件,处理复杂的嵌套结构,提供详细的合并报告,并实现全面的验证和错误处理机制。 2. 功能需求 2.1 基本合并功能 支持合并两个或多个…...
【网络编程】网页的显示过程
文章目录 1.URL 解析2.DNS 解析3.TCP三次握手4.服务器接收请求5.客户端接收响应 首先我们知道网页经过网络总共有应用层,传输层,网络层,数据链路层,物理层 1.URL 解析 将获得的网址解析出协议,主机名,域名…...
用nginx-rtmp-win32-master及ffmpeg模拟rtmp视频流
效果 使用nginx-rtmp-win32-master搭建RTMP服务 双击exe就可以了。切记整个目录不能有中文 README.md ,启用后本地的RTM路径: rtmp://192.168.1.186/live/xxx ffmpeg将地本地视频推RMTP F:\rtsp\ffmpeg-7.0.2-essentials_build\bin>ffmpeg -re -i F:\rtsp\123.mp4 -c c…...
使用python-pptx将PPT转换为图片:将每张幻灯片保存为单独的图片文件
哈喽,大家好,我是木头左! 本文将详细介绍如何使用python-pptx将PPT的每一张幻灯片保存为单独的图片文件。 安装python-pptx库 需要确保已经安装了python-pptx库。可以通过以下命令使用pip进行安装: pip install python-pptx导入所需库 接下来,需要导入一些必要的库,包…...
聊聊企业的低代码实践背景与成效
数字化转型的道路充满挑战是大家的普遍共识,许多企业仍未完全步入数字化的行列,它们面临的是系统的碎片化和操作的复杂性。在数字优先的今天,企业要想维持竞争力,比任何时期都更需要实施某种程度的数字化升级。如果一个组织难以提…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
