请问在MAXCOMPUTE SQL 里有没有函数判断string 是否为数字?
请问在MAXCOMPUTE SQL 里有没有函数判断string 是否为数字?
Dataworks上的ODPS spark处理数据会比直接用ODPS SQL效率高吗?
Dataworks上的ODPS spark处理数据会比直接用ODPS SQL效率高吗?
想问下odps里面存储元数据的表信息在哪
想问下odps里面存储元数据的表信息在哪
ECS集群部署大数据环境
本参考文档使用4节点机器集群进行部署,操作用户为root·部署Hadoop环境一、机器初始化1,绑定机器的网卡和硬盘(此步骤只针对未绑定网卡和硬盘的erdma机器,大部分机器开出来网卡和硬盘是绑定的)查看如图即为绑定成功。 申请到ecs机器后,需绑定机器的网卡和硬盘。具体步骤如下:绑定与解绑 rdma 网卡脚本:bind() {
echo $1 > /sys/bus/pci/drivers/iohub_sriov/unbind
echo $1 > /sys/bus/pci/drivers/virtio-pci/bind
}
ubind() {
echo $1 > /sys/bus/pci/drivers/virtio-pci/unbind
echo $1 > /sys/bus/pci/drivers/iohub_sriov/bind
}
main() {
local op=$1
local bdf=$2
if [ $bdf == "all" ]; then
for i in `xdragon-bdf net all`
do
eval $op $i
done
else
eval $op $bdf
fi
}
main $@绑定与解绑 硬盘 脚本:bind() {
echo $1 > /sys/bus/pci/drivers/iohub_sriov/unbind
echo $1 > /sys/bus/pci/drivers/virtio-pci/bind
}
ubind() {
echo $1 > /sys/bus/pci/drivers/virtio-pci/unbind
echo $1 > /sys/bus/pci/drivers/iohub_sriov/bind
}
main() {
local op=$1
local bdf=$2
if [ $bdf == "all" ]; then
for i in `xdragon-bdf blk all`
do
eval $op $i
done
else
eval $op $bdf
fi
}
main $@分别登录机器,保存脚本后执行 bash ./<name> bind all ,对网卡及硬盘进行绑定。硬盘绑定后进行初始化及挂载操作:#初始化mkfs -t ext4 /dev/vdb
mkfs.ext4 /dev/vdc
mkfs.ext4 /dev/vdd
mkfs.ext4 /dev/vde
mkfs.ext4 /dev/vdf
mkfs.ext4 /dev/vdg
mkfs.ext4 /dev/vdh
mkfs.ext4 /dev/vdi
mkfs.ext4 /dev/vdj
mkfs.ext4 /dev/vdk#挂载mount /dev/vdb /mnt/disk1
mount /dev/vdc /mnt/disk2
mount /dev/vdd /mnt/disk3
mount /dev/vde /mnt/disk4
mount /dev/vdf /mnt/disk5
mount /dev/vdg /mnt/disk6
mount /dev/vdh /mnt/disk7
mount /dev/vdi /mnt/disk8
mount /dev/vdj /mnt/disk9
mount /dev/vdj /mnt/disk102,配置集群间互信①每台节点配置/etc/hosts文件②各节点ssh-keygen生成RSA密钥和公钥ssh-keygen -q -t rsa ?-N "" -f ?~/.ssh/id_rsa③ 将所有的公钥文件汇总到一个总的授权key文件中ssh 192.168.70.210 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keysssh 192.168.70.213 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keysssh 192.168.70.202 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keysssh 192.168.70.201 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys④ 将该总授权key文件分发至其他各个机器中scp ~/.ssh/authorized_keys 192.168.70.213:~/.ssh/scp ~/.ssh/authorized_keys 192.168.70.202:~/.ssh/scp ~/.ssh/authorized_keys 192.168.70.201:~/.ssh/3,下载相关资源包下载hadoop,jdk,spark安装包到/opt 路径下,本文以hadoop-2.7.7、spark-2.4.4及jdk1.8.0_291为例下载Hadoop: ? wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz下载spark : ? wget https://archive.apache.org/dist/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz下载jdk ? : ? wget https://download.oracle.com/otn/java/jdk/8u301-b09/d3c52aa6bfa54d3ca74e617f18309292/jdk-8u301-linux-x64.tar.gz下载hive ?: ? ?wget https://archive.apache.org/dist/hive/hive-2.3.7/apache-hive-2.3.7-bin.tar.gz(由于jdk版本众多,此下载链接仅作参考,实际可根据需求自行在官网下载jdk版本。配置jdk也需按照实际下载版本进行配置)将3个压缩包分发至其余3个节点并解压scp -r hadoop-2.7.7.tar.gz ?jdk-8u291-linux-x64.tar.gz spark-2.4.4-bin-hadoop2.7 ?iZ8vbi4yik4sloxwhzcmxzZ:/optscp -r hadoop-2.7.7.tar.gz ?jdk-8u291-linux-x64.tar.gz spark-2.4.4-bin-hadoop2.7 ?iZ8vb7zxw3jzrodh0htmgiZ:/optscp -r hadoop-2.7.7.tar.gz ?jdk-8u291-linux-x64.tar.gz spark-2.4.4-bin-hadoop2.7 ?iZ8vb7zxw3jzrodh0htmgjZ:/opt二、配置JDK1,解压jdk压缩包在/opt路径下解压jdk包。2,配置环境变量在/etc/profile中增加:? export JAVA_HOME=/opt/jdk1.8.0_291/? export JRE_HOME=/opt/jdk1.8.0_291/jre? export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH? export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$SPARK_HOME/bin:$HIVE_HOME/bin ? 执行 source /etc/profile 使环境变量生效三、安装Hadoop?1.配置core-site.xml文件📎core-site.xml·需在各节点中创建此路径2.配置?hadoop-env.sh文件📎hadoop-env.shexport JAVA_HOME环境变量? 3.配置 yarn-env.sh📎yarn-env.sh修改JAVA_HOME为本机JAVA_HOME路径?4.配置hdfs-site.xml📎hdfs-site.xml5.配置mapred-site.xml📎mapred-site.xml配置yarn管理6.配置yarn-site.xml📎yarn-site.xml7.配置slaves 文件将主机名添加进slaves文件hadoop3.0之后slaves文件改名为workers8.配置hadoop的环境变量在/etc/profile中增加:export HADOOP_HOME=/opt/hadoop-2.7.7/export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop9.分发至各节点将/opt/hadoop-2.7.7分发至其余各节点10.格式化hdfs主节点执行hadoop namenode -format11.开启hadoop在master节点/opt/hadoop-2.7.7/路径下执行:sbin/start-dfs.shsbin/start-yarn.sh完成 后执行jps查询,master如下图所示,则配置成功。四、安装Spark1.配置环境变量vi /etc/profile 中加入export SPARK_HOME=/opt/spark-2.4.4-bin-hadoop2.7分发/etc/profile文件至其余节点1.配置slaves 文件将主机名添加进slavesvi ?/opt/spark-2.4.4-bin-hadoop2.7/conf/slaves2.配置spark-env.sh在/opt/spark-2.4.4-bin-hadoop2.7/conf 路径下执行cp spark-env.sh.template spark-env.sh在spark-env.sh中增加:export SPARK_MASTER_HOST=iZ8vbi4yik4sloxwhzcmxuZexport SPARK_LOCAL_IP=`/sbin/ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1`export SPARK_LOCAL_DIRS=/mnt/data/spark_tmpexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop/export SPARK_DAEMON_MEMORY=10g3.配置spark-defaults.conf#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Default system properties included when running spark-submit.
# This is useful for setting default environmental settings.
# Example:
# spark.master spark://master1:7077
# spark.eventLog.enabled true
# spark.eventLog.dir hdfs://namenode:8021/directory
# spark.serializer org.apache.spark.serializer.KryoSerializer
# spark.driver.memory 5g
# spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
spark.master yarn
spark.deploy-mode client
#driver
spark.driver.cores 4
spark.driver.memory 10g
spark.driver.maxResultSize 10g
##executor
spark.executor.instances 45
spark.executor.memory 13g
spark.executor.cores 4
#shuffle
spark.task.maxFailures 4
spark.default.parallelism 180
spark.sql.shuffle.partitions 180
spark.shuffle.compress true
spark.shuffle.spill.compress true
#other
spark.task.maxFailures 4
spark.kryoserializer.buffer 640k
spark.memory.storageFraction 0.5
spark.shuffle.file.buffer 32k
spark.kryoserializer.buffer.max 2000m
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.memory.fraction 0.6
spark.network.timeout 3600
spark.sql.broadcastTimeout 3600
spark.locality.wait=0s
#speculation
#spark.speculation=true
#spark.speculation.interval=300s
#spark.speculation.quantile=0.9
#spark.speculation.multiplier=1.5
#aqe
spark.sql.adaptive.enabled true
spark.sql.autoBroadcastJoinThreshold 128m
spark.sql.adaptive.advisoryPartitionSizeInBytes 128MB
spark.sql.adaptive.coalescePartitions.minPartitionNum 1
spark.sql.adaptive.coalescePartitions.initialPartitionNum 180
spark.sql.adaptive.forceApply true
spark.sql.adaptive.coalescePartitions.enabled true
spark.sql.adaptive.localShuffleReader.enabled true
spark.sql.adaptive.skewJoin.enabled true
spark.sql.adaptive.skewJoin.skewedPartitionFactor 5
spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes 256m
#DF
#spark.sql.optimizer.dynamicPartitionPruning.enabled false
#spark.sql.optimizer.dynamicPartitionPruning.reuseBroadcastOnly true
spark.sql.optimizer.dynamicDataPruning.pruningSideThreshold 10GB
#spark.sql.optimizer.dynamicDataPruning.enabled false
#cbo
#spark.sql.statistics.histogram.enabled true
#spark.sql.statistics.histogram.numBins 32
spark.sql.cbo.enabled true
spark.sql.cbo.joinReorder.enabled true
spark.sql.cbo.planStats.enabled true
spark.sql.cbo.starSchemaDetection true
spark.sql.cbo.joinReorder.card.weight 0.6
spark.sql.cbo.joinReorder.ga.enabled true
spark.sql.autoBroadcastJoinRowThreshold 500000
#log
spark.eventLog.enabled true
spark.eventLog.dir hdfs://master1:9000/sparklogs
spark.eventLog.compress true
log4j.logger.org.apache.storage.ShuffleBlockFetcherIterator TRACE在hdfs中创建/sparklogs目录hadoop fs -mkdir /sparklogs分发/opt/spark-2.4.4-bin-hadoop2.7至其余节点4.启动spark在/opt/spark-2.4.4-bin-hadoop2.7路径下执行:sbin/start-all.shjps执行如下图,则启动成功。五、安装Mysql1,下载安装包(以8.0.21版本为例)#下载wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz#解压tar -xf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz2,设置mysql目录#将解压的文件移动到/usr/local下,并重命名为mysql? mv mysql-8.0.21-linux-glibc2.12-x86_64 /usr/local/mysql3.创建data文件夹,并授权cd /usr/local/mysql/# 创建文件夹mkdir data# 给文件夹授权chown -R root:root /usr/local/mysqlchmod -R 755 ?/usr/local/mysql4,初始化数据库/usr/local/mysql/bin/mysqld --initialize --user=root --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data5.配置my.cnfcd /usr/local/mysql/support-files/
touch my-default.cnf
chmod 777 my-default.cnf
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
vi /etc/my.cnf
#my.cnf中添加:
---------------------------------------------------------------------------------------------------------------------------------------------
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
#socket =/var/lib/mysql/mysql.socket
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
user = root
tmpdir = /tmp
port = 3306
#skip-grant-tables
#lower_case_table_names = 1
# server_id = .....
# socket = .....
#lower_case_table_names = 1
max_allowed_packet=32M
default-authentication-plugin = mysql_native_password
#lower_case_file_system = on
#lower_case_table_names = 1
log_bin_trust_function_creators = ON
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES6.设置开机自启cd /usr/local/mysql/support-filescp mysql.server /etc/init.d/mysqlchmod +x /etc/init.d/mysql7. 注册服务并检测#注册chkconfig --add mysql#检测chkconfig --list mysql###UBUNTU
echo 'deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse' >>/etc/apt/sources.list
sudo apt-get update
sudo apt-get install sysv-rc-conf
sysv-rc-conf --list8. 配置/etc/ld.so.confvim /etc/ld.so.conf# 添加如下内容:/usr/local/mysql/lib9. 配置环境变量vim /etc/profile# 添加如下内容:# MYSQL ENVIRONMENTexport PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/libsource /etc/profile10.启动mysqlservice mysql start11.登录mysqlmysql -uroot -p使用临时密码登录,修改root用户密码,设置root远程登录#报错:Your password does not satisfy the current policy requirements#可设置弱口令(mysql8.0)set global validate_password.policy=0;set global validate_password.length=1;之后再修改密码mysql> alter user user() identified by "123456";
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set host = '%' where user = 'root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
用户授权
grant all privileges on *.* to 'hive'@'%';六、安装Hive以hive-2.3.7为例1.将压缩包解压至/opt下2. 配置环境变量vim /etc/profile#hiveexport HIVE_HOME=/opt/apache-hive-2.3.7-bin3. 配置hive-site.xmlvim /opt/apache-hive-2.3.7-bin/conf/hive-site.xml📎hive-site.xml4.拷贝mysql的驱动程序#下载mysql-connector-java-8.0.21.ziphttps://dev.mysql.com/downloads/file/?id=496589将下载的mysql-connector-java-8.0.21.zip解压后拷贝至/opt/apache-hive-2.3.7-bin/lib下5.hive初始化执行 schematool -dbType mysql -initSchema[报错][解决]一,java.lang.NoSuchMethodError原因:1.系统找不到相关jar包2.同一类型的 jar 包有不同版本存在,系统无法决定使用哪一个二,com.google.common.base.Preconditions.checkArgument根据百度可知,该类来自于guava.jar三,查看该jar包在hadoop和hive中的版本信息hadoop-3.2.1(路径:/opt/hadoop-3.2.1/share/hadoop/common/lib)中该jar包为 guava-27.0-jre.jarhive-2.3.6(路径:hive/lib)中该jar包为guava-14.0.1.jar四,解决方案删除hive中低版本的guava-14.0.1.jar包,将hadoop中的guava-27.0-jre.jar复制到hive的lib目录下即可[报错][解决]修改hive-site.xml配置<configuration>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>6.在mysql增加hive用户mysql> create user 'hive'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on *.* to 'hive'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> create user 'hive'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on *.* to 'hive'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)7.启动hive执行hive
odps sql被删除了,能找回来吗
odps sql被删除了,能找回来吗
Dataphin V3.5 新版本发布!10大能力项升级,覆盖多场景妙用,让智能数据建设与治理快速见效!
一、关于Dataphin(智能数据建设与治理)Dataphin是阿里巴巴集团OneData数据治理方法论基于内部实践的产品化输出,致力于帮助各企业用中台方法论治理企业级好数据,构建起质量可靠、消费便捷、生产安全经济的企业级数据中台。Dataphin支持在多种大数据架构之上构建数据中台,具备一站式数据采、建、管、用全生命周期管理能力,显著提升数据治理水平,在计算引擎利旧降本基础上满足企业多元化数智应用需求,为企业上云用数赋智夯实数字化能力底座。二、DataphinV3.5版本概览01-一站式数据汇聚处理,降低中台建设起步成本多平台多引擎适配:新增支持以Hadoop为元仓时,通过多租户支持纳管多个不同的计算平台;通过MaxCompute+DLF支持数据湖元数据的统一管理、研发、质量及数据安全功能。高效数据集成:新增支持Tablestore、Kudu离线数据集成、SAP?Hana跨Schema读取、FTP输入组件优化,并提升了实时集成稳定性及质量。02-阿里方法论(OneData)指导数据研发与治理数据研发赋能:提升了在开源Flink引擎下实时研发的能力,支持自定义数据源类型,支持Hive数据源;建模研发优化支持派生指标基于最大分区的计算,支持无下游依赖时的事实逻辑表的名称变更。治理实践输出:新增支持数据标准的创建与管理,数据质量稽核新增支持Oracle、PostgreSQL、SQL?Server、SAP?Hana;支持权限审计、权限记录的下载。03-平台易用性升级,加速企业数字能力建设使用体验优化:内置帮助文档,独立部署环境下可在使用中随时查看;利用MaxCompute短查询加速的能力提升了即席查询的性能。智能运维诊断:新增支持任务运行诊断的能力,可排查任务等待、延迟及失败的原因;针对SQL任务优化了调度资源分配逻辑,提升了SQL任务的调度性能,提升SQL任务在调度系统的吞吐量;优化了OpenAPI的稳定性和质量。满足客制需求:按照自定义租户名称展示页签标题及favicon,支持对接外部审批系统,支持数据服务消费相关的API以支持数据服务API上架到客户自己的资产管理及目录平台。三、新版本重点特性详解?及应用场景示例特性1:多租户能力应用场景:支持多个计算平台的纳管,充分利用已有资产,降低中台建设起步成本很多客户在升级到数据中台前,已经开始了部分数据资产的建设,在不同的部门或业务中使用Hadoop集群或者星环TDH的集群用于离线数据研发。在升级到企业级的数据中台后,若能利用原有集群的计算能力,逐步迁移到新的计算平台,将更好的利用已有的资产,降低企业建设数据中台的起步成本。在新版本中,Dataphin将支持以MaxCompute或Hadoop(包括CDH5、CDH6、CDP、星环Inceptor等)为元仓,支持利用Dataphin的多租户的能力,用不同的租户纳管不同的计算平台,一套平台统一数据研发平台,统一研发体验。应用场景:支持租户间数据共享和推送,灵活进行集团/子公司数据资产管控和沉淀大型集团公司往往有公共资产建设及统一平台的诉求,而旗下子公司有保留相对独立的管控及数据资产管理的空间的诉求。利用Dataphin提供的多租户的能力,集团和子公司分别使用不同的租户,通过数据集成的能力共享数据到集团租户,集团也可通过数据集成的能力将公共数据推送到子公司的租户中。这样的架构形式既能统一管理沉淀集团公共层数据,又能让子公司保留相对的独立,进行更加灵活的管控和研发。特性2:湖仓一体应用场景:通过MaxCompute?+?DLF?进行统一的元数据管理,更高效清晰管理企业数据资产最近几年,湖仓一体的解决方案逐渐出现在客户的应用场景中。Dataphin也对这一场景进行了支持。通过数据仓库MaxCompute和数据湖构建(DLF)将绑定映射了DLF元数据库的MaxCompute的外部项目注册到Dataphin的项目计算引擎,Dataphin可将数据湖中的元数据读取到Dataphin中,进行统一的元数据管理。基于MaxCompute能力的湖仓一体的方案支持以下的产品特性:基础离线研发:基于MaxCompute?SQL可对数据湖内的数据进行加工处理统一元数据管理:可查询检索湖仓中的表、字段,并根据任务中自动血缘解析进行溯源追踪资产治理:可对湖仓内的数据进行数据质量稽核校验,并可支持安全识别及脱敏通过以上产品能力,企业在数据入湖、入仓之后,能够对海量数据进行存储和加工,帮助企业完成更清晰易用的数据资产管理,高效支撑后续的数据调取、数据处理、数据消费需求,快速应对快速变化的数字化应用挑战。特性3:建模研发优化应用场景:派生指标基于最大分区的计算?,可节约存储资源,保障数据强一致性维度逻辑表,?累积快照事实表,?周期快照事实表的每一个分区都是截止分区时间的全量数据,?最后一个分区完全覆盖前面所有分区的数据.?建模原来的设计中,?指标生产读取的是指标时间对应的逻辑表分区,?为了满足补数据的需要,?必须保留逻辑表很长一段时间的历史分区,?带来了存储的浪费.?3.5?版本支持在使用最新分区补任意过去时间的数据,?且默认使用这种设置.特性4:数据标准应用场景:为数据标准建设提供统一的产品化能力,让数据流通通畅无歧义数据标准是用于描述公司层面需共同遵守的数据含义和业务规则,通常从业务、技术、管理三方面进行定义,使组织内外部使用和交换的数据是一致且准确的。然而,数据标准需求缺乏统一管理、不同系统间标准制定依据各异、资产建设缺乏和标准的关联,使得数据标准的建设和应用都面临很大困难。Dataphin全新上线的数据标准功能,旨在为数据标准建设提供统一的产品化能力,并通过上线审批等环节加强标准质量的审核。V3.5版本中,核心支持了以下能力;标准目录管理:支持最多五级目录树管理,可以按照业务组织结构对标准进行分级管理标准集管理:标准集是一系列规范相似或一致、业务含义相关的一组标准的合集。标准集不定义标准,而是基于标准集属性,定义归属这个标准集都应该统一遵循的规范和约束。数据标准属性继承归属的标准集属性。数据标准管理:支持数据标准创建、审批、发布上线、修订、下线等后续,Dataphin将进一步拓展标准和质量监控规则的关联能力以支持研发链路的落标稽核能力,以及参考数据管理等能力。特性5:权限审计应用场景:权限现状及变动随时掌握,实现敏感数据精细化合规管理数据资产化已是大势所趋,各行各业在大力拓展数据储备的同时,对于敏感数据权限的管理也提出了更高的要求:敏感表授权给了哪些用户?转岗用户拥有哪些敏感权限需要回收?不合理的高危权限究竟是谁授权和审批的?如何应对合规性要求?DataphinV3.5新增权限审计模块,能够帮助企业更加直观高效地对各类型敏感数据进行精细化管理,实现数据权限千人千面,保障数据被合适的对象消费:支持对当前系统的权限详情(表授权给哪些用户,某个用户有哪些表权限)、权限操作(申请、授权等)进行详情审计,详细了解权限系统的现状和变动。支持对审计详情进行下载存档,用于程序化检查或者合规检查。特性6:内置帮助文档?应用场景:缩短产品使用适应周期,帮助新手用户快速上手开展数据建设工作Dataphin功能众多,使用链路复杂,对于新手用户来说,通常需要参照用户指南进行操作。V3.5版本,新增内置帮助文档,可以在操作页面一键呼出,随时查阅功能说明及操作引导,同时支持自定义调整窗口位置和大小,大大增强了易用性,减少产品版本和用户指南版本不一致、查阅困难的问题。特性7:查询加速应用场景:即席查询提升至秒级,不卡顿无需等待,让研发体验更顺滑Dataphin?3.5?针对MaxCompute引擎的即席查询,?默认启用了查询加速MCQA(MaxCompute?Query?Acceleration)功能.?MCQA自动识别查询作业大小,?自动分配小作业到独立资源组,?将原来分钟级的查询优化提升到秒级.?该功能为默认设置,?无须用户介入开启。特性8:运行诊断应用场景:自动化分析定位问题,提升运维人员修复效率,降低人工运维成本任务为什么还未开始运行?需要处理的最上游节点是那个?为何某个任务被限流、命中了哪些限流规则?长时间等待调度资源,是分配不合理还是可用余量不足?...对于运维人员来说,常常被这些问题困扰,人工排查难度大、准略率较低,影响了任务恢复进度,还可能阻碍下游业务数据产出。V3.5新增的离线任务运行诊断能力,支持:自动化问题排查:按照上游依赖、定时时间、限流规则、调度资源、实例运行5个流程,对实例运行结果进行自动化分析,帮助用户快速识别并定位问题智能诊断建议:提示问题产生的可能原因和修复建议,降低运维人员的人工分析成本,提升问题修复效率特性9:调度资源优化应用场景:提升SQL任务在调度系统的吞吐量,避免因SQL任务阻塞影响业务进程任务只有在调度资源充足的情况下才会被下发到计算引擎。对于SQL任务来说,主要消耗计算资源而非调度资源,因此调度资源通常不会成为SQL任务运行的瓶颈。然而历史版本中,调度系统未针对SQL任务预留单独的调度资源组,从而导致SQL任务常常因为其他消耗资源多、运行时间久的任务阻塞下发,影响业务进程。V3.5版本中,Dataphin针对SQL任务预留了单独的调度资源组,提升了资源分配的合理性特性10:审批系统接入应用场景:通过接入企业统一的审批中心,提升审批效率及易用性Dataphin内置了简单的审批系统,可支持在Dataphin内部进行如权限申请、业务上线等审批的申请、审核和流转。也有部分的客户希望将Dataphin的审批任务集成在已有的审批系统中,以及根据组织关系及企业内部的流程规范进行更加自由及客制化的审批规则定义,如对于低敏感等级的数据对某些项目进行开放,无需审批,而对于敏感数据的使用,则需要配置三级审批,降低安全合规的风险。DataphinV3.5版本支持了对接外部审批系统的功能,客户可经过简单的代码及配置,即可将Dataphin的审批任务发送到外部审批系统中,完成审批后,将审批结果同步给Datpahin,进行后续的处理从而大幅提升审批工作流的效率和易用性。四、总结与展望本次发布的V3.5版本中,Dataphin围绕数据资产建设、数据资产治理、基础平台等三大功能板块进行了完备性、安全行、研发效率、开放性、稳定性、易用性、可交付性等方面进行了优化和升级。在下一个版本中,我们将持续提升资产建设平台的易用性及可交付性、资产治理平台的完备性以及基础平台的稳定性和开放性进行迭代,敬请期待!关于瓴羊:瓴羊是一家专注企业数智服务的DaaS公司,由阿里巴巴集团数据中台、业务中台、客服系统、供应链服务等多个部门融合升级而来,沉淀了阿里十年来数字化实践的经验与能力,是“阿里巴巴最佳实践”完整、系统、产品化地全面对外输出。 瓴羊拥有着深度的行业洞见,专业的数字化团队就企业数字化转型中的关键问题提供咨询服务,针对数据治理和分析、营销、销售、服务、供应链等企业核心经营领域,推出了分析云、营销云、产销云、客服云、开发云等智能产品矩阵。通过持续的陪跑服务,打造客户成功保障体系,帮助企业实现多云多平台的数字化增长。 瓴羊致力于帮助不断求“新”的企业实现全方位的数字化,至今已成功服务了LVMH、现代斗山、红星美凯龙、小鹏汽车、汉高、老板电器、麦当劳、一汽奥迪、海底捞、泡泡玛特等企业的数字化建设项目,帮助客户在数据资产、会员价值、货品效率、客户体验等方面带来突破性增长。
HTAP 能够取代 OLAP 吗?
HTAP是什么HTAP(Hybrid Transaction and Analytical Processing)数据库,也称混合型关系数据库,是能同时提供OLTP和OLAP的混合关系型数据库。在互联网浪潮出现之前,企业的数据量普遍不大,特别是核心的业务数据,通常一个单机的数据库就可以保存。那时候的存储并不需要复杂的架构,所有的线上请求OLTP和后台分析OLAP都跑在同一个数据库实例上。随着互联网的发展,企业的业务数据量不断增多,单机数据库的容量限制制约了其在海量数据场景下的使用。因此在实际应用中,为了面对各种需求,OLTP、OLAP 在技术上分道扬镳,在很多企业架构中,这两类任务处理由不同团队完成,同时部署的OLAP和OLTP通过ETL进行衔接。为了提升OLAP的性能,需要在ETL过程中进行大量的预计算,包括数据结构的调整和业务逻辑处理。这样的好处是可以控制OLAP的访问延迟,提升用户体验。但是,因为要避免抽取数据对OLTP系统造成影响,所以必须在日终的交易低谷期才能启动ETL过程。这样一来, OLAP与OLTP的数据延迟通常就在一天左右,习惯上大家把这种时效性表述为T+1。其中,T日就是指OLTP系统产生数据的日期,T+1日是OLAP中数据可用的日期,两者间隔为1天。这个时候我们会发现,这个体系的主要问题就是OLAP系统的数据时效性,T+1太慢了。随着大数据时代互联网的高速发展,商业决策更加注重数据的支撑,大量应用要求对海量数据进行实时更新和查询,这都要求OLAP系统更快速地反映业务的变化。另一方面,企业需要维护不同的数据库以便支持两类不同的任务,管理和维护成本高。因此,能够统一支持事务处理和工作负载分析的数据库成为众多企业的需求。在此背景下,由 Gartner 提出的 HTAP成为希望。基于创新的计算存储框架,HTAP 数据库能够在一份数据上同时支撑业务系统运行和 OLAP 场景,避免在传统架构中,在线与离线数据库之间大量的数据交互。HTAP=OLTP+OLAP?我们了解了OLAP 数据库和 OLTP 数据库之后,我们再来考虑:HTAP=OLTP+OLAP,是这样吗?我们来仔细考虑考虑,OLTP系统多为行存储,主打高并发、低延时和高稳定性,能够实现复杂的查询操作以秒钟级的响应,适合经常写入的小型业务;而OLAP主要用于大规模的复杂查询,持续时间很长,性能开销极大,主要以读取内容为主,且依赖丰富的索引,常常按列存储;如果他们部署在一起,OLAP的临时查询开销可能会影响OLTP的写入延时,另外很多OLTP数据库在执行OLAP业务时,仍然需要将行存数据转储到列存表中,这样也会大大的影响业务执行效率。现实情况是,对HTAP的需求,日常还是以OLTP为主,但也需要对数据进行加工,以保证偶尔的OLAP工作负载,这里说的OLAP场景并不是真正意义上的OLAP,它只为了提升在OLTP系统中执行复杂查询的性能。所以大部分的HTAP并不完整包含OLAP的完整功能,且他们的OLAP功能整体比较弱,只是满足偶尔提取一些需要用于分析的少量数据。在实际的使用过程中,很多企业为了实现HTAP,是花了不少代价的。选型过程中功能需要考虑的因素包括:数据存储格式、SQL引擎的效率、OLTP/OLAP的资源隔离与防干扰措施、数据有几份备份、如何避免大型集群产生数据沼泽等等。可以说综合性能和成本来考量,对于很多企业,HTAP并不能是OLAP的替代方案。如何满足当今的OLAP业务在大数据不断高速发展的时代,当您的企业发现传统的数据库已经不能满足业务需求,需要选型OLAP或者HTAP来解决OLAP需求时,重要考虑哪些影响数据使用的因素呢?SQL能力:是否具备完善的SQL标准和ACID特性,支持对接和兼容常用的开源组件,来保障用户轻松实现不同数据基础设施的平稳迁移。实时性:在瞬息万变的商业社会,要尽快的做出决策需要进行实时的数据分析和数据服务。正如我们刚才分析的,HTAP要兼容OLAP和OLTP场景,往往很难保证全量数据T+0实时性。高并发:在需要大量使用高并发OLAP的场景,HTAP如何满足;同时,还需要考虑高负载运行时对OLTP业务的影响。扩展能力:当计算和存储需要扩展时,不同的架构的数据库会有不同的扩容方式,相对而言,存算分离的数据库可以自由增减计算和存储资源,按需付费节约成本。按照上述的参考,您在选型OLAP或者HTAP时,如果希望获得支持存算分离、分布式事务处理、SQL 兼容性、云化弹性供给、Hadoop 生态、性能优化等关键特性的解决方案,以此来助力企业实现降成本、提性能、全融合的大数据建设目标,建议选择Snowflake、Databricks、OushuDB 这一类云原生数据平台,它们突破了传统 MPP 和 Hadoop 的局限性,实现了上述的存算完全分离,计算和存储可部署在不同物理集群,并通过虚拟计算集群技术实现了高并发,同时保障事务支持。近两年,国内也诞生了全实时 Omega 架构的湖仓一体,甚至可以完成全量数据 "T+0"的流处理和实时按需查询,摆脱了"T+1"的传统痛点,强大的云原生OLAP也有效解决了HTAP面对海量数据管理的问题。
微服务和Service Mesh技术的历史发展脉络
目前业界跟微服务相关的开发平台和框架更是不胜枚举:Spring Cloud, Service Fabric,Linkerd,Envoy,Istio ... 这些纷繁的产品和Sevice Mesh有什么样的关联?哪些属于Service Mesh的范畴? 为了理清这些繁复的产品和概念,我们先来了解下微服务和Service Mesh技术的历史发展脉络。 了解清楚了技术的主要脉络,就能清晰的知道上述的各个平台、框架属于技术脉络中的哪个结点,其间的关系也就一目了然。 Phil Cal?ado的文章《Pattern: Service Mesh》,详细的介绍了从开发者视角来看,服务开发模式和Service Mesh技术的演化过程,个人认为是非常经典的学习Service Mesh的资料。这里借用文章的脉络,结合自己的理解并予以简化,试图说清楚ServiceMesh的概念和这项技术诞生的历史必然性。你可以把本文当做原文的一个中译版本来阅读。 时代0:开发人员想象中,不同服务间通信的方式,抽象表示如下: 时代1:原始通信时代 然而现实远比想象的复杂,在实际情况中,通信需要底层能够传输字节码和电子信号的物理层来完成,在TCP协议出现之前,服务需要自己处理网络通信所面临的丢包、乱序、重试等一系列流控问题,因此服务实现中,除了业务逻辑外,还夹杂着对网络传输问题的处理逻辑。 时代2:TCP时代 为了避免每个服务都需要自己实现一套相似的网络传输处理逻辑,TCP协议出现了,它解决了网络传输中通用的流量控制问题,将技术栈下移,从服务的实现中抽离出来,成为操作系统网络层的一部分。 时代3:第一代微服务 在TCP出现之后,机器之间的网络通信不再是一个难题,以GFS/BigTable/MapReduce为代表的分布式系统得以蓬勃发展。这时,分布式系统特有的通信语义又出现了,如熔断策略、负载均衡、服务发现、认证和授权、quota限制、trace和监控等等,于是服务根据业务需求来实现一部分所需的通信语义。
部署spark2.2集群(standalone模式)
一起来实战部署spark2.2集群(standalone模式)版本信息操作系统 CentOS 7.5.1804JDK:1.8.0_191scala:2.12.8spark:2.3.2机器信息本次实战用到了三台机器,相关信息如下:IP 地址主机名身份192.168.150.130masterspark的master节点192.168.150.131slave1spark的一号工作节点192.168.150.132slave2spark的二号工作节点接下来开始实战;关闭防火墙执行以下命令永久关闭防火墙服务:systemctl stop firewalld.service && systemctl disable firewalld.service设置hostname(三台电脑都做)修改/etc/hostname文件,将几台电脑的主机名分别修改为前面设定的master、slave0等;设置/etc/hosts文件(三台电脑都做)在/etc/hosts文件尾部追加以下三行内容,三台电脑追加的内容一模一样,都是下面这些:master 192.168.150.130
slave1 192.168.150.131
slave2 192.168.150.132创建用户(三台电脑都做)创建用户和用户组,并指定home目录的位置:groupadd spark && useradd -d /home/spark -g spark -m spark设置spark用户的密码:passwd spark以spark账号的身份登录;文件下载和解压(三台电脑都做)分别去java、scala的官网下载以下两个文件:jdk-8u191-linux-x64.tar.gz scala-2.12.8.tgz上述两个文件下载到目录/home/spark下,依次解压后,/home/spark下的内容如下所示:[
[email protected] ~]$ ll
总用量 427836
drwxr-xr-x. 7 spark spark 245 10月 6 20:55 jdk1.8.0_191
-rw-r--r--. 1 spark spark 191753373 2月 2 08:49 jdk-8u191-linux-x64.tar.gz
drwxrwxr-x. 6 spark spark 50 12月 4 18:25 scala-2.12.8
-rw-r--r--. 1 spark spark 20467943 2月 2 08:49 scala-2.12.8.tgz修改/home/spark文件夹下的.bash_profile文件,在尾部增加以下内容(spark相关的是后面会用到的,这里把配置先写上):export JAVA_HOME=/home/spark/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export SCALA_HOME=/home/spark/scala-2.12.8
export PATH=${SCALA_HOME}/bin:$PATH
export SPARK_HOME=/home/spark/spark-2.3.2-bin-hadoop2.7
export PATH=${SPARK_HOME}/bin:$PATH执行以下命令,使得.bash_profile的修改生效:source .bash_profile分别执行java -version和scala -version命令,检查上述设置是否生效:[
[email protected] ~]$ java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
[
[email protected] ~]$ scala -version
Scala code runner version 2.12.8 -- Copyright 2002-2018, LAMP/EPFL and Lightbend, Inc.spark的设置(只在master机器操作)登录master机器:去spark的官网下载文件spark-2.3.2-bin-hadoop2.7.tgz,下载到目录/home/spark下,在此解压;进入目录/home/spark/spark-2.3.2-bin-hadoop2.7/conf;执行以下命令,将"spark-env.sh.template"更名为"spark-env.sh":mv spark-env.sh.template spark-env.sh打开文件spark-env.sh,在尾部增加以下内容:export SPARK_MASTER_IP=node0
export SPARK_MASTER_PORT=7077
export SPARK_EXECUTOR_INSTANCES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=256M
export SPARK_MASTER_WEBUI_PORT=8080
export SPARK_CONF_DIR=/home/spark/spark-2.3.2-bin-hadoop2.7/conf
export JAVA_HOME=/home/spark/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre进入目录/home/spark/spark-2.3.2-bin-hadoop2.7/conf,执行以下命令,将slaves.template更名为slaves:mv slaves.template slaves打开文件slaves,将尾部的localhost删除,再增加以下内容:slave1
slave2以上就是所有设置,接下来要将spark文件夹同步到其他机器上将spark文件夹同步到其他机器在master机器执行以下命令,即可将整个spark文件夹同步到slave1:scp -r ~/spark-2.3.2-bin-hadoop2.7
[email protected]:~期间会要求输入slave1的密码,输入密码后即可开始同步;在master机器执行以下命令,即可将整个spark文件夹同步到slave2:scp -r ~/spark-2.3.2-bin-hadoop2.7
[email protected]:~期间会要求输入slave2的密码,输入密码后即可开始同步;启动spark以spark账号登录master机器,执行以下命令即可启动spark集群:/home/spark/spark-2.3.2-bin-hadoop2.7/sbin/start-all.sh启动过程中,会要求输入slave1、slave2的密码,输入即可;为了避免每次启动和停止都要输入slave1和slave2的密码,建议将三台机器配置ssh免密码登录,请参考《Docker下,实现多台机器之间相互SSH免密码登录》;启动成功后,可以通过浏览器查看启动情况,如下图,地址是:http://192.168.150.130:8080/至此,spark集群部署成功,接下来的章节,我们会一起进行更多的spark实战;
Java小史:Java简介和现状
1.Java介绍任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的编程语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,太阳计算机系统(Sun公司)放弃了该项计划。随着1990年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Java编程语言的风格十分接近C++语言。继承了C++语言面向对象技术的核心,舍弃了容易引起错误的指针,以引用取代;移除了C++中的运算符重载和多重继承特性,用接口取代;增加垃圾回收器功能。在Java SE 1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。太阳微系统对Java语言的解释是:“Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全、与系统无关可移植、高性能、多线程和动态的语言” ?Java不同于一般的编译语言或解释型语言。它首先将源代码编译成字节码,再依赖各种不同平台上的虚拟机来解释执行字节码,从而具有“一次编译,到处运行”的跨平台特性。在早期JVM中,这在一定程度上降低了Java程序的运行效率。但在J2SE1.4.2发布后,Java的运行速度有了大幅提升。 ?与传统类型不同,Sun公司在推出Java时就将其作为开放的技术。全球的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同,此外,微软公司后来推出了与之竞争的.NET平台以及模仿Java的C#语言。后来Sun公司被甲骨文公司并购,Java也随之成为甲骨文公司的产品。 现时,移动操作系统Android大部分的代码采用Java编程语言编程。2.Java当前排名2022年8月份TIOB排行榜?2002-2022年TIOB语言趋势榜??3.版本历史New Relic公司《2022 年Java生态系统状况报告》?JDK版本使用情况Java 1=JDK1.1(1997)Oak(橡树) Java 2=JDK1.2(1998)Playground(操场) 加入了集合类,发布了Java平台的三个版本:J2SE(桌面), J2EE(服务器端),J2ME(移动端) Java 3=JDK1.3(2000)Kestrel(红隼) Java 4=JDK1.4(2002)Merlin(隼) Java 5=JDK1.5(2004)Tiger(老虎) foreach迭代方式、可变参数、枚举、自动拆装箱、泛型、注解 Java 6=JDK1.6(2006)Mustang(野马) 2006年,Hadoop出现,java被用在大数据领域 2009年,oracle收购sun公司 Java 7=JDK1.7(2011)Dolphin(海豚) Java 8=JDK1.8(2014)LTS(长期支持) Lambda表达式、Stream集合处理、函数式编程 Java 9=JDK1.9(2017) Java 10=JDK 10(2018.3月) 2018年,Android系统发布,java被用在移动端 Java 11=JDK 11(2018.9月)LTS(长期支持) Java 12=JDK 12(2019.3月) Java 13=JDK 13(2019.9月) Java 14=JDK 14 ?(2020.3月) Java 15=JDK 15 (2020.9月)Java 16=JDK 16(2021.3)Java 17 LTS(2021.9长期支持)Java 18=?JDK 18 (2022.3)