数仓项目环境搭建
目录
一、安装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导入所需库 接下来,需要导入一些必要的库,包…...

聊聊企业的低代码实践背景与成效
数字化转型的道路充满挑战是大家的普遍共识,许多企业仍未完全步入数字化的行列,它们面临的是系统的碎片化和操作的复杂性。在数字优先的今天,企业要想维持竞争力,比任何时期都更需要实施某种程度的数字化升级。如果一个组织难以提…...

zookeeper面试题
1. 什么是zookeeper zookeeper是一个开源的 分布式协调服务。他是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。 Zooke…...

Linux学习笔记13---GPIO 中断实验
中断系统是一个处理器重要的组成部分,中断系统极大的提高了 CPU 的执行效率,本章会将 I.MX6U 的一个 IO 作为输入中断,借此来讲解如何对 I.MX6U 的中断系统进行编程。 GIC 控制器简介 1、GIC 控制器总览 I.MX6U(Cortex-A)的中断控制器…...

[Redis][Hash]详细讲解
目录 0.前言1.常见命令1.HSET2.HGET3.HEXISTS4.HDEL5.HKEYS6.HVALS7.HGETALL8.HMGET9.HLEN10.HSETNX11.HINCRBY12.HINCRBYFLOAT 2.内部编码1.ziplist(压缩链表)2.hashtable(哈希表) 3.使用场景4.缓存方式对比1.原⽣字符串类型2.序列化字符串类型3.哈希类型 0.前言 在Redis中&am…...

上半年亏损扩大/百亿资产重组终止,路畅科技如何“脱困”?
在智能网联汽车市场形势一片大好的前提下,路畅科技上半年的营收却出现了下滑,并且亏损也进一步扩大。 2024年半年度报告显示,路畅科技营业收入1.35亿元,同比下滑7.83%;实现归属上市公司股东的净利润为亏损2491.99万元…...

协议IP规定,576字节和1500字节的区别
576字节和1500字节的区别主要在于它们是IP数据报在数据链路层中的最大传输单元(MTU)的不同限制。 576字节:这个数值通常与IP层(网络层)的数据报有关,它指的是在不进行分片的情况下,IP数据…...

对抗攻击的详细解析:原理、方法与挑战
对抗攻击的详细解析:原理、方法与挑战 对抗攻击(Adversarial Attack)是现代机器学习模型,尤其是深度学习模型中的一个关键安全问题。其本质在于,通过对输入数据添加精微的扰动,人类难以察觉这些扰动&#…...

Python办公自动化教程(003):PDF的加密
【1】代码 from PyPDF2 import PdfReader, PdfWriter# 读取PDF文件 pdf_reader PdfReader(./file/Python教程_1.pdf) pdf_writer PdfWriter()# 对第1页进行加密 page pdf_reader.pages[0]pdf_writer.add_page(page) # 设置密码 pdf_writer.encrypt(3535)with open(./file/P…...

python全栈学习记录(十七)logging、json与pickle、time与datatime、random
logging、json与pickle、time与datatime、random 文章目录 logging、json与pickle、time与datatime、random一、logging二.json与pickle三.time与datatime四.random 一、logging logging模块用来记录日志信息。 import logging # 进行基本的日志配置 logging.basicConfig( fi…...

【艾思科蓝】JavaScript在数据可视化领域的探索与实践
【ACM出版 | EI快检索 | 高录用】2024年智能医疗与可穿戴智能设备国际学术会议(SHWID 2024)_艾思科蓝_学术一站式服务平台 更多学术会议请看 学术会议-学术交流征稿-学术会议在线-艾思科蓝 目录 引言 JavaScript可视化库概览 D3.js基础入门 1. 引入…...

【标准库的典型内容】std::declval
一、 d e c l v a l declval declval的基本概念和常规范例 s t d : : d e c l v a l std::declval std::declval 是 C 11 C11 C11标准中出现的一个函数模板。这个函数模板设计的比较奇怪(没有实现,只有声明),因此无法被调用&…...