CarbonData部署和使用

实战技术:单表千亿电信大数据场景,使用Spark+CarbonData替换Impala案例 个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 【背景介绍】 国内某移动局点使用Impala组件处理电信业务详单,每天处理约100TB左右详单,详单表记录每天大于百亿级别,在使用impala过程中存在以下问题: 详单采用Parquet格式存储,数据表使用时间+MSISDN号码做分区,使用Impala查询,利用不上分区的查询场景,则查询性能比较差。 在使用Impal... 阅读详情

Apache CarbonData   |   GitHub   |   文档

1 概述

CarbonData是一个开源的用于快速数据分析的新型BigData文件格式,这个项目是华为公司在2016年开源的类Parquet的列式存储,也仅仅用了不到一年的时间就成为了Apache的顶级项目。

CarbonData是一种高性能数据解决方案,支持各种数据分析方案,包括BI分析,临时SQL查询,详细记录快速过滤查找,流分析等。CarbonData已经部署在许多企业生产环境中,在最大的场景之一中,它支持在具有3PB数据(超过5万亿条记录)的单个表上进行查询,响应时间少于3秒!


CarbonData文件格式是HDFS中的一个列式存储,它具有许多现代列式格式的功能,如可拆分、压缩模式、复杂数据类型等,并且CarbonData具有以下独特功能:

  • 将数据与索引一起存储:它可以显着提高查询性能并减少 I/O 扫描和CPU资源(查询中有过滤器)。CarbonData索引由多级索引组成,处理框架可以利用此索引来减少调度和处理所需的任务,并且还可以在任务端扫描中以更精细的粒度单位(称为blocklet)跳过扫描而不是扫描整个文件。
  • 可操作的编码数据:通过支持高效压缩和全局编码方案,可以查询压缩/编码数据,可以在将结果返回给用户之前转换数据,这是“后期实现的”。
  • 支持单一数据格式的各种用例:如交互式OLAP样式查询,顺序访问(大扫描),随机访问(窄扫描)。

2 安装

2.1 要求

  • 类Unix环境(Linux、Mac OS X)
  • Git
  • Apache Maven(推荐3.3版本或者更高)
  • Java 7 或者 Java 8
  • Apache Thrift 0.9.3

其它安装我这里直接跳过。可以查看下环境的thrift:thrift -version,如果没有则需要安装:

  1. 安装依赖
yum -y install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel openssl-devel
  1. 安装 thrift
wget http://archive.apache.org/dist/thrift/0.9.3/thrift-0.9.3.tar.gz
tar -zxf thrift-0.9.3.tar.gz
cd thrift-0.9.3/
./configure --with-boost=/usr/local
make -j24
make install

# 验证
thrift -version

错误一:如果在编译时报如下错误:

g++: error: /usr/local/lib64/libboost_unit_test_framework.a: No such file or directory
make[5]: *** [processor_test] Error 1
make[5]: *** Waiting for unfinished jobs....
make[5]: Leaving directory `/opt/thrift-0.9.3/lib/cpp/test'
make[4]: *** [all] Error 2
make[4]: Leaving directory `/opt/thrift-0.9.3/lib/cpp/test'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/opt/thrift-0.9.3/lib/cpp'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/opt/thrift-0.9.3/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/thrift-0.9.3'
make: *** [all] Error 2

出现上面的错误是因为./configure 的时候是默认编译32位的,不会在 lib64/下产生文件,可以先查找libboost_unit_test_framework.a文件,再在提示的目录下创建一个软连接。

find / -name libboost_unit_test_framework.a
# 将/usr/local/lib/libboost_unit_test_framework.a软连到lib64下
ln -s /usr/local/lib/libboost_unit_test_framework.a /usr/local/lib64/libboost_unit_test_framework.a

错误二:libboost_unit_test_framework.a找不到时,则需要手动安装boost库。然后在创建64位的软连接。

# https://www.boost.org/
wget https://dl.bintray.com/boostorg/release/1.71.0/source/boost_1_71_0.tar.gz
tar zxf boost_1_71_0.tar.gz
cd boost_1_71_0/
./bootstrap.sh 
./b2 install

ln -s /usr/local/lib/libboost_unit_test_framework.a /usr/local/lib64/libboost_unit_test_framework.a

错误三:问题解决后再次make install,此时可能还会遇到如下的错误:

collect2: error: ld returned 1 exit status
make[4]: *** [processor_test] Error 1
make[4]: Leaving directory `/opt/thrift-0.9.3/lib/cpp/test'
make[3]: *** [install] Error 2
make[3]: Leaving directory `/opt/thrift-0.9.3/lib/cpp/test'
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory `/opt/thrift-0.9.3/lib/cpp'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/opt/thrift-0.9.3/lib'
make: *** [install-recursive] Error 1

安装libevent,然后再次安装thrift

wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
tar -zxf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure --prefix=/usr
make
sudo make install 

2.2 获取CarbonData

2.2.1 下载二进制包

在CarbonData发布1.6.0之后进行编译中提示有个包缺失(carbondata-core),然后在Maven中央仓库中查找是也缺失没有这个依赖包,最新的版本显示的是 1.5.4。
carbondata-core Maven
和Spark集成比较简单,官方已经提供了这个编译后的jar包,因此可以直接下载官方提供的apache-carbondata-1.6.0-bin-spark2.3.2-hadoop2.7.2.jar包:carbondata/1.6.0

因此这次直接下载官方已经打好的二进制jar包。

wget https://dist.apache.org/repos/dist/release/carbondata/1.6.0/apache-carbondata-1.6.0-bin-spark2.3.2-hadoop2.7.2.jar

2.2.2 编译方式

又过了段之间,发现Maven中央仓库终于同步上了,我们这次从头开始编译,本想着会顺利,不过依然出现了一些问题,这里也提供了我的解决方法供大家参考。

本次编译我们将源码的Hadoop版本修改为3.1.2进行编译。编译过程如下:

# 1 clone源码
#  也可以直接下载对应版本的源码包
# wget http://archive.apache.org/dist/carbondata/1.6.0/apache-carbondata-1.6.0-source-release.zip
# unzip apache-carbondata-1.6.0-source-release.zip
# cd carbondata-parent-1.6.0/
git clone https://github.com/apache/carbondata.git
cd carbondata/

# 2 选择版本。这里选择最新的CarbonData-1.6.0
git tag
git checkout tags/apache-CarbonData-1.6.0-rc3

# 3 编译。指定Spark版本为2.3.4,Hadoop版本为 3.1.2
mvn -DskipTests -Pspark-2.3 -Dspark.version=2.3.4 -Dhadoop.version=3.1.2 clean package

编译过程可能会出现如下的问题:

问题1:依赖获取失败

[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project carbondata-hive: Could not resolve dependencies for project org.apache.carbondata:carbondata-hive:jar:1.6.0: Could not transfer artifact org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde from/to conjars (http://conjars.org/repo): conjars.org: Name or service not known: Unknown host conjars.org: Name or service not known -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :carbondata-hive

解决:我们直接下载依赖包,手动导入本地Maven仓库。执行如下命令。

wget https://repo.spring.io/plugins-release/org/pentaho/pentaho-aggdesigner-algorithm/5.1.5-jhyde/pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar

# 手动导入jar包到本地仓库
mvn install:install-file -DgroupId=org.pentaho -DartifactId=pentaho-aggdesigner-algorithm -Dversion=5.1.5-jhyde -Dpackaging=jar -Dfile=pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar

问题2:org.apache.htrace.fasterxml.jackson.core.type不存在

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on project carbondata-processing: Compilation failure: Compilation failure:
[ERROR] /root/apache/carbondata/processing/src/main/java/org/apache/carbondata/processing/loading/parser/impl/JsonRowParser.java:[34,53] package org.apache.htrace.fasterxml.jackson.core.type does not exist
[ERROR] /root/apache/carbondata/processing/src/main/java/org/apache/carbondata/processing/loading/parser/impl/JsonRowParser.java:[35,52] package org.apache.htrace.fasterxml.jackson.databind does not exist
[ERROR] /root/apache/carbondata/processing/src/main/java/org/apache/carbondata/processing/loading/parser/impl/JsonRowParser.java:[55,5] cannot find symbol
[ERROR]   symbol:   class ObjectMapper
[ERROR]   location: class org.apache.carbondata.processing.loading.parser.impl.JsonRowParser
[ERROR] /root/apache/carbondata/processing/src/main/java/org/apache/carbondata/processing/loading/parser/impl/JsonRowParser.java:[55,37] cannot find symbol
[ERROR]   symbol:   class ObjectMapper
[ERROR]   location: class org.apache.carbondata.processing.loading.parser.impl.JsonRowParser
[ERROR] /root/apache/carbondata/carbondata3/processing/src/main/java/org/apache/carbondata/processing/loading/parser/impl/JsonRowParser.java:[58,50] cannot find symbol
[ERROR]   symbol:   class TypeReference
[ERROR]   location: class org.apache.carbondata.processing.loading.parser.impl.JsonRowParser
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :carbondata-processing

分析。可以看到源码中processing模块中使用的对象不存在,通过源码分析,报错的部分引用的包来自于htrace-core依赖,而这个包又继承自hadoop-hdfs。我的的Hadoop的版本从2.7改为了3.1.2其中的htrace-core依赖
也发生了改变,因此查看这个依赖的代码,发现TypeReference的包名由org.apache.htrace.fasterxml.jackson.core.type.TypeReference改为了org.apache.htrace.shaded.fasterxml.jackson.core.type.TypeReference、
ObjectMapper的包名由import org.apache.htrace.fasterxml.jackson.databind.ObjectMapper改为了org.apache.htrace.shaded.fasterxml.jackson.databind.ObjectMapper。
在这里插入图片描述

解决。 因此我们将processing/src/main/java/org/apache/carbondata/processing/loading/parser/impl/JsonRowParser.java代码中注釋掉第34、35行,导入新的包名,如下:

34 //import org.apache.htrace.fasterxml.jackson.core.type.TypeReference;
35 //import org.apache.htrace.fasterxml.jackson.databind.ObjectMapper;
36 import org.apache.htrace.shaded.fasterxml.jackson.core.type.TypeReference;
37 import org.apache.htrace.shaded.fasterxml.jackson.databind.ObjectMapper;

问题3:findbugs-maven-plugin检查项目时有一个Bug

[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:findbugs-maven-plugin:3.0.4:check (analyze-compile) on project carbondata-core: failed with 1 bugs and 0 errors  -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :carbondata-core

解决(第①步):通过IDEA工具打开源码发现项目中maven-duplicate-finder-plugin的版本无法识别,所以进行如下修改,将报错的如下四个模块的pom文件中的此插件添加上版本信息

  • examples/spark2/pom.xml第204行
  • datamap/mv/core/pom.xml第132行
  • datamap/mv/plan/pom.xml第126行
  • integration/presto/pom.xml第637行
      <plugin>
        <groupId>com.ning.maven.plugins</groupId>
        <artifactId>maven-duplicate-finder-plugin</artifactId>
        <!-- 这里添加上版本,1.0.9 -->
        <version>1.0.9</version>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>

解决(第②步):因为我们修改了Spark和Hadoop的版本,这里就不进行严格的分析工作,因此设置分析工作的等级。
修改父级pom文件,大概在390多行,添加如下设置。

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>3.0.4</version>
        <configuration>
          <!-- 设置分析工作的等级,可以为Min、Default和Max -->
          <effort>Low</effort>
          <!-- Low、Medium和High (Low最严格) -->
          <threshold>High</threshold>
          <excludeFilterFile>${dev.path}/findbugs-exclude.xml</excludeFilterFile>
          <failOnError>true</failOnError>
          <findbugsXmlOutput>true</findbugsXmlOutput>
          <xmlOutput>true</xmlOutput>
          <effort>Max</effort>
        </configuration>
        <executions>
          <execution>
            <id>analyze-compile</id>
            <phase>compile</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

编译成功。上面的问题解决后,再次编译,编译成功后显示如下信息:

[INFO] Reactor Summary for Apache CarbonData :: Parent 1.6.0:
[INFO]
[INFO] Apache CarbonData :: Parent ........................ SUCCESS [  2.343 s]
[INFO] Apache CarbonData :: Common ........................ SUCCESS [  8.144 s]
[INFO] Apache CarbonData :: Core .......................... SUCCESS [ 35.548 s]
[INFO] Apache CarbonData :: Processing .................... SUCCESS [ 16.732 s]
[INFO] Apache CarbonData :: Hadoop ........................ SUCCESS [  8.838 s]
[INFO] Apache CarbonData :: Hive .......................... SUCCESS [ 36.953 s]
[INFO] Apache CarbonData :: Streaming ..................... SUCCESS [ 20.272 s]
[INFO] Apache CarbonData :: Store SDK ..................... SUCCESS [01:11 min]
[INFO] Apache CarbonData :: Spark Datasource .............. SUCCESS [ 41.440 s]
[INFO] Apache CarbonData :: Spark Common .................. SUCCESS [01:05 min]
[INFO] Apache CarbonData :: CLI ........................... SUCCESS [ 33.643 s]
[INFO] Apache CarbonData :: Lucene Index DataMap .......... SUCCESS [  9.463 s]
[INFO] Apache CarbonData :: Bloom Index DataMap ........... SUCCESS [  7.759 s]
[INFO] Apache CarbonData :: Spark2 ........................ SUCCESS [01:46 min]
[INFO] Apache CarbonData :: Spark Common Test ............. SUCCESS [ 57.039 s]
[INFO] Apache CarbonData :: DataMap Examples .............. SUCCESS [  2.454 s]
[INFO] Apache CarbonData :: Materialized View Plan ........ SUCCESS [ 40.615 s]
[INFO] Apache CarbonData :: Materialized View Core ........ SUCCESS [ 40.122 s]
[INFO] Apache CarbonData :: Assembly ...................... SUCCESS [ 31.297 s]
[INFO] Apache CarbonData :: Examples ...................... SUCCESS [ 30.754 s]
[INFO] Apache CarbonData :: presto ........................ SUCCESS [ 44.017 s]
[INFO] Apache CarbonData :: Flink Examples ................ SUCCESS [  3.032 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  11:54 min
[INFO] Finished at: 2019-09-15T10:19:59+08:00
[INFO] ------------------------------------------------------------------------

2.3 和Spark集成

下载安装Spark 2.3.2,最好下载带Hadoop的tgz包。可以Standalone模式搭建。安装部分可以参考官网文档Spark Standalone Mode

  • 将上一步下载获得的apache-carbondata-1.6.0-bin-spark2.3.2-hadoop2.7.2.jar放置到$SPARK_HOME/carbonlib(carbonlib文件夹需要手动创建)下。

  • 在Spark类路径中添加carbonlib文件夹路径

# $SPARK_HOME/conf/spark-env.sh,配置或添加
SPARK_CLASSPATH=$SPARK_HOME/carbonlib/*
  • 复制GitHub对应版本的配置文件carbon.properties.template 到文件$SPARK_HOME/conf/夹并将文件重命名为carbon.properties。

  • 将上面几步添加的包和配置文件同样的方式复制到Spark其它节点上

  • 在Spark节点master节点中,配置$SPARK_HOME/conf/spark-defaults.conf文件中下表中提到的属性

#CarbonData配置项
## 要传递给驱动程序的一串额外JVM选项。例如,GC设置或其他日志记录。
spark.driver.extraJavaOptions		-Dcarbon.properties.filepath=$SPARK_HOME/conf/carbon.properties
## 要传递给执行程序的一串额外JVM选项。例如,GC设置或其他日志记录。注意:您可以输入以空格分隔的多个值。
spark.executor.extraJavaOptions		-Dcarbon.properties.filepath=$SPARK_HOME/conf/carbon.properties
  • 在$SPARK_HOME/conf/carbon.properties文件中添加以下属性:
carbon.storelocation=hdfs://cdh6:8020/app/CarbonStore

2.4 先决条件

  • 安装并运行Hadoop HDFS和YARN
  • 运行Spark
  • CarbonData用户有权限访问HDFS

2.5 准备数据

$SPARK_HOME的文件结构如下(carbonlib为自己创建的)

[root@cdh6 spark-2.3.2-bin-hadoop2.7]#  tree -C -L 1 ./
./
├── bin
├── carbonlib
├── conf
├── data
├── examples
├── jars
├── kubernetes
├── LICENSE
├── licenses
├── logs
├── NOTICE
├── pids
├── python
├── R
├── README.md
├── RELEASE
├── sample.csv
├── sbin
├── work
└── yarn

15 directories, 5 files

在上面的目录下写入数据到 sample.csv:

# 例如在$SPARK_HOME(/opt/spark-2.3.2-bin-hadoop2.7)下
cat > sample.csv << EOF
id,name,city,age
1,david,shenzhen,31
2,eason,shenzhen,27
3,jarry,wuhan,35
EOF

然后将数据上传到HDFS的/home/carbondata/下

hadoop fs -mkdir -p /home/carbondata
hadoop fs -put sample.csv /home/carbondata/

3 使用

重启Spark,然后执行:

$SPARK_HOME/bin/spark-shell \
--master spark://cdh6:7077 \
--total-executor-cores 2 \
--executor-memory 2G \
--jars file:///$SPARK_HOME/carbonlib/apache-carbondata-1.6.0-bin-spark2.3.2-hadoop2.7.2.jar

在spark-shell中执行:

# 1 导入如下包
scala> import org.apache.spark.sql.SparkSession
scala> import org.apache.spark.sql.CarbonSession._

# 2 创建 CarbonSession
scala> val carbon = SparkSession.builder().config(sc.getConf).getOrCreateCarbonSession("hdfs://cdh6:8020/carbon/data/store")

# 3 创建表。这一步会在上面getOrCreateCarbonSession指定HDFS路径/carbon/data/store创建出来
#  注意这里STORED AS carbondata,存储格式使用 carbondata 
scala> carbon.sql(
           s"""
              | CREATE TABLE IF NOT EXISTS test_table(
              |   id string,
              |   name string,
              |   city string,
              |   age Int)
              | STORED AS carbondata
           """.stripMargin)

# 4 查看表。不仅可以看到我们刚创建出来的表test_table,还可以看到Hive表依然可以查看到
scala> carbon.sql("SHOW TABLES").show()
+--------+----------+-----------+
|database| tableName|isTemporary|
+--------+----------+-----------+
| default|     movie|      false|
| default|    person|      false|
| default|test_table|      false|
+--------+----------+-----------+

# 5 加载数据
scala> carbon.sql("LOAD DATA INPATH '/home/carbondata/sample.csv' INTO TABLE test_table")

# 6 查询表数据
scala> carbon.sql("SELECT * FROM test_table").show()
+---+-----+--------+---+
| id| name|    city|age|
+---+-----+--------+---+
|  1|david|shenzhen| 31|
|  2|eason|shenzhen| 27|
|  3|jarry|   wuhan| 35|
+---+-----+--------+---+

# 7 统计相同城市的平均年龄
scala> carbon.sql(
           s"""
              | SELECT city, avg(age), sum(age)
              | FROM test_table
              | GROUP BY city
           """.stripMargin).show()
+--------+--------+--------+
|    city|avg(age)|sum(age)|
+--------+--------+--------+
|   wuhan|    35.0|      35|
|shenzhen|    29.0|      58|
+--------+--------+--------+

# 8 插入一条数据。show()是一个执行算子,仅用作执行这个sql(一个Job)
scala> carbon.sql(
           s"""
              | INSERT INTO test_table VALUES("4", "Yore", "BeiJin", 20)
           """.stripMargin).show()
## 再次查询数据,可以看到数据已经插入到表中。
scala> carbon.sql("SELECT * FROM test_table").show()
+---+-------+--------+---+
| id|   name|    city|age|
+---+-------+--------+---+
|  1|  david|shenzhen| 31|
|  2|  eason|shenzhen| 27|
|  3|  jarry|   wuhan| 35|
|  4|   Yore|  BeiJin| 20|
+---+-------+--------+---+

# 9 修改一条数据
scala> carbon.sql(
           s"""
              | UPDATE test_table SET (age)=(18) WHERE id='4'
           """.stripMargin).show()
## 再次查询数据,可以看id为4的年龄已经更改为18岁啦。
scala> carbon.sql("SELECT * FROM test_table").show()
+---+-------+--------+---+
| id|   name|    city|age|
+---+-------+--------+---+
|  1|  david|shenzhen| 31|
|  2|  eason|shenzhen| 27|
|  3|  jarry|   wuhan| 35|
|  4|   Yore|  BeiJin| 18|
+---+-------+--------+---+

# 删除一条数据
scala> carbon.sql(
           s"""
              | DELETE FROM test_table WHERE id='2'
           """.stripMargin).show()
## 再次查询数据,可以看id为1的那条数据已经被删除。
scala> carbon.sql("SELECT * FROM test_table").show()
+---+-------+--------+---+
| id|   name|    city|age|
+---+-------+--------+---+
|  2|  eason|shenzhen| 27|
|  3|  jarry|   wuhan| 35|
|  4|   Yore|  BeiJin| 18|
+---+-------+--------+---+


推荐一个官方文档的一个PDF资料:CarbonData Spark Integration And Carbon Query Flow



CarbonData入门:MRS基础原理之数据库 CarbonData是一种基于MRS的高性能数据存储和查询解决方案,它通过列式存储、数据压缩、索引技术和数据分区等方式,提供了高效的数据管理和查询能力。本文介绍了CarbonData的基础原理,并提供了数据加载和查询的示例代码,帮助读者更好地理解和使用CarbonData。列式存储:CarbonData将数据按照列的方式进行存储,每个列都有自己的存储文件,这样可以实现更高的数据压缩率。它将数据按照列的方式进行存储,相比传统的行式存储,可以提供更高的压缩率和查询性能。CarbonData示例代码。 阅读详情

相关推荐

【CarbonData】在 Kubernetes 上部署和运行 CarbonData 作业是否可行?有哪些方案?

在 Kubernetes 上运行 CarbonData 作业不仅是可行的,而且是面向未来的现代化数据平台演进的重要一步。其核心在于认识到CarbonData 的计算与存储分离的本质,并将 K8s 定位为纯粹的计算资源调度层。生产落地建议坚持外部化原则:HDFS 和 Hive Metastore 必须作为稳定、高可用的外部服务存在。精心构建镜像:将 CarbonData JAR 和所有必要的客户端配置文件打包进 Spark 镜像,确保环境一致性。强化安全。

九师兄 71

CarbonData详细解析

CarbonData是一种新型的Apache Hadoop本地文件格式,使用先进的列式存储、索引、压缩和编码技术,以提高计算效率,有助于加速超过PB数量级的数据查询,可用于更快的交互查询。同时,CarbonData也是一种将数据源与Spark集成的高性能分析引擎。

hello.reader 6103

【CarbonData】在混合云或存算分离架构下部署 CarbonData 有哪些注意事项?

混合云架构下 CarbonData 部署优化指南 核心挑战:CarbonData 原生的本地化读取设计与云环境存算分离架构存在根本性矛盾。通过金融风控场景实践,总结出三大关键优化策略: 文件系统调优: 弃用原生S3A,采用EMRFS或增强版S3A连接器 配置S3Guard元数据缓存(DynamoDB实现),使listStatus延迟从50ms降至1-2ms 增大连接池和并发度参数 数据布局优化: 将默认1GB BlockSize提升至4GB 启用自动compaction防止小文件 按时间+用户ID双重排序提

九师兄 15

CarbonData简介

目录 一、什么是CarbonData Apache CarbonData是一种新的大数据文件格式,使用先进的柱状存储、索引、压缩和编码技术来提高计算效率,这有助于在pb级的数据上以数量级的速度加快查询速度。 CarbonData特别设计了多种优化策略,如多级索引、压缩和编码技术,旨在提高包含filter、aggregation和counst distinct等分析查询的性能,用户期望在拥有较...

junerli的博客 4094

【CarbonData】CarbonData 的 Thrift Server 组件的作用是什么?如何使用它进行 JDBC/ODBC 连接?

根据 CarbonData 源码 (),被实现为的一个扩展。其核心作用是:通俗解释:Thrift Server 本质上是一个常驻的 Spark Application。它启动后,会初始化一个兼容的服务进程,监听一个 TCP 端口(默认 10000)。当外部客户端(如 Beeline, Tableau)通过 JDBC/ODBC 连接时,Thrift Server 会接收 SQL 请求,将其交给内部的执行,并将结果集通过 Thrift 协议返回给客户端。生活化类比。

九师兄 13

基于Trino358和Carbondata2.2.0编译的Trino Carbondata Plugin

CarbonData是一种新型的Apache Hadoop本地文件格式,使用先进的列式存储、索引、压缩和编码技术,以提高计算效率,有助于加速超过PB数量级的数据查询,可用于更快的交互查询。同时,CarbonData也是一种将数据源与Spark集成的高性能分析引擎。 Trino完全基于内存的并⾏计算,分布式SQL交互式查询引擎.是一种Massively parallel processing (MPP)架构,多个节点管道式执⾏,⽀持任意数据源(通过扩展式Connector组件),数据规模GB~PB级使用的技术,如向量计算,动态编译执⾏计划,优化的ORC和Parquet Reader等

Spark2.1.0 + CarbonData1.0.0集群模式部署及使用入门

引言 准备工作 1 集群规划 2 系统环境 编译及部署 1 编译 2 集群模式部署 数据准备 1 数据描述 2 数据生成 3 数据上传 启动spark-shell 1 简介 2 案例 创建CarbonSession 1 简介 2 案例 创建数据库及数据表 1 简介 2 案例 数据查询 1 数据导入 11 导入方式一 111 简介 112 案例 12 导入方式二 121 简介 122 案例 13 ba

贝壳里的海 8797

Apache CarbonData,实现大数据即席查询秒级响应.pdf

Apache CarbonData,实现大数据即席查询秒级响应.pdf

CarbonData 1.5.2编译部署步骤(spark2.3.2)

简介: Apache CarbonData是在Apache Hadoop、Apache Spark等大数据平台上实现快速分析的索引柱状数据存储解决方案。 Apache CarbonData 是一种新的融合存储解决方案,利用先进的列式存储,索引,压缩和编码技术提高计算效率,从而加快查询速度,其查询速度比 PetaBytes 数据快一个数量级。 Apache CarbonData是首个由中国公司...

zxz306418932的博客 872

告别VBA!用Python+PyWin32自动化你的SolidWorks建模流程(附完整代码)

本文详细介绍了如何利用Python和PyWin32实现SolidWorks建模流程的自动化,替代传统的VBA宏开发。通过环境配置、宏代码转换、高级开发模式及工程化实践等实战内容,帮助机械设计师构建高效、可维护的自动化工作流,显著提升设计效率。

weixin_30485379的博客 364

基于ASP.NET+SQLServer的美妆网站的设计与实现

通过本次ASP.NET MVC美妆商城项目的开发,我们实现了一个功能完善、性能稳定的在线购物平台。该项目不仅提升了用户的购物体验,也为商家提供了一个高效的商品管理和销售渠道。未来,我们将持续优化系统功能,提升用户体验,以适应不断变化的市场需求。

毕业设计大牛哥 1497

spark2.3.2+Yarn+Carbondata Thrift Server 配置carbondata1.5

Carbondata简介 ApacheCarbondata是一种新的融合存储解决方案,利用先进的列式存储,索引,压缩和编码技术提高查询效率。 ApacheCarbondata中文文档地址: http://carbondata.iteblog.com Apache Carbondata英文文档:http://carbondata.apache.org/ GitHub源码地址...

小苟的专栏 2585

CUDA详细安装及环境配置——环境配置指南 – CUDA+cuDNN+PyTorch 安装

本文详细介绍了如何确定显卡支持的CUDA版本、选择对应的cuDNN版本,并逐步安装CUDA、cuDNN和PyTorch。首先,通过命令行输入nvidia-smi.exe查看显卡支持的CUDA版本。接着,根据CUDA版本选择对应的cuDNN版本并下载。然后,从NVIDIA官方网站下载CUDA安装包,按照提示进行安装,并检查是否安装成功。同样地,下载cuDNN安装包,解压后将文件拷贝到CUDA安装目录中,并通过命令行验证安装是否成功。最后,根据PyTorch官网的指引,选择合适的安装命令进行PyTorch的安装

2501_90350274的博客 5098

Apache CarbonData 1.0.0 编译部署 on Mac OS

@ 2017-02-04 安装Apache Thrift 1 安装Boost 2 安装libevent 3 编译Apache Thrift 编译CarbonData 1 Clone CarbonData 2 maven源切换 3 Build CarbonData 在Standalone Spark集群安装和配置CarbonData 通过Spark Shell 调用carbondat

静下心来好好学习 586

MIUI升级后录音神秘消失?别慌!手把手教你从Android/data目录找回宝贵录音文件

本文详细解析了MIUI升级后录音文件消失的原因,并提供了从Android/data目录找回录音文件的实用指南。通过技术分析和步骤演示,帮助小米手机用户解决录音文件丢失问题,同时分享预防措施和高级恢复方案,确保重要录音数据安全。

weixin_30696427的博客 280

雪亮工程视频联网技术详解:视综平台主流接入方式与协议分析

随着雪亮工程建设的深入,视频资源的汇聚与共享成为核心需求。本文简要剖析了雪亮视综平台下的视频联网接入技术,重点讲解了主流接入方式的区别与选型,并深入探讨了平台内部及跨平台的视频资源共享机制(含级联与推送模式),旨在为安防开发人员和系统集成商提供清晰的架构思路与技术参考。

lsz152590的博客 716

对应chd5.14的spark_carbonData使用文档(基于CDH 的spark-yarn模式)

一、部署(基于CDH 的spark-yarn模式)下载源码编译(目前官网已经提供编译好的jar包了)【https://dist.apache.org/repos/dist/release/carbondata/】mvn -DskipTests -Pspark-2.1 -Dspark.version=2.1.0 clean packagemvn -DskipTests -Pspark-2.2 -Ds...

weixin_36313293的博客 267

Python爬虫实战:利用最新技术爬取微信公众号文章(基于搜狗搜索)

使用最新Python版本确保兼容性和性能:比传统Requests更强大的HTML解析库Playwright:新一代浏览器自动化工具,比Selenium更高效Asyncio:异步IO框架提升爬虫效率Redis:分布式任务队列和去重MongoDB:非关系型数据库存储结构化数据本文详细介绍了如何利用Python最新技术栈构建一个功能强大的微信公众号文章爬虫。通过结合Playwright浏览器自动化、异步IO、分布式任务队列等技术,我们实现了一个能够绕过反爬机制、高效稳定抓取数据的解决方案。

2201_76125261的博客 1794

Spark2.1.0 + CarbonData1.0.0+hadoop2.7.2集群模式部署及使用入门

Spark2.1.0 + CarbonData1.0.0+hadoop2.7.2集群模式部署及使用入门 参考http://blog.youkuaiyun.com/coridc/article/details/61915801 说明:spark2.1.1不兼容,hadoop-2.7.3可以兼容

hanlanshenlan的专栏 291

npm install failed如何办?

上网搜索,说是网络配置不太对。按照如下几步,保证解决问题。在运行npm install指令时,出现如下错误。

xiezhipu的博客 879

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

carbondata mysql_CarbonData集群模式体验

官方提供了一个快速上手的 Quick-Start ,不过是采用spark-shell local模式的。我这里在实际集群环境做了下测试,并且记录了下过程,希望对大家有所帮助。前言之前专门写过一篇CarbonData的文章;由CarbonData想到了存储和计算的关系。可惜碍于时间问题到现在才开始真正的尝试。编译打包截止到本文章发出,CarbonData 明确支持的Spark版本是 1.5.2(默认...

weixin_39653481的博客 160

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

CarbonData集群模式体验

官方提供了一个快速上手的 Quick-Start ,不过是采用spark-shell local模式的。我这里在实际集群环境做了下测试,并且记录了下过程,希望对大家有所帮助。 前言 之前专门写过一篇CarbonData的文章;由CarbonData想到了存储和计算的关系。可惜碍于时间问题到现在才开始真正的尝试。 编译打包 截止到本文章发出,Carbon...

weixin_34080903的博客 125

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

离线环境安装Ambari并替换Spark版本集成CarbonData实战

大数据组件的版本兼容性管理是集群运维中的常见挑战,尤其在物理隔离的内网离线环境中。HDP生态中Ambari虽能提供集中的监控与配置管理,但其内置Spark版本往往无法满足特定存储引擎的需求。CarbonData作为高效的列式存储格式,对Spark版本有严格适配要求,版本错配极易引发NoSuchMethodError等问题。本文从离线yum源搭建出发,详解Ambari安装要点,并通过rsync替换Spark二进制目录、保留Ambari管理能力的方式实现版本平滑切换,最后完成CarbonData jar部署与S

weixin_34189116的博客 406

carbondata2.0.1初体验

一、更方便的部署配置模式 只需要增加一个conf 即可,不再需要配置carbon的storepath spark-shell --conf spark.sql.extensions=org.apache.spark.sql.CarbonExtensions --jars /Users/hulb/opt/third/spark-2.4.3-bin-hadoop2.7/jars/apache-carbondata-2.0.1-bin-spark2.4.5-hadoop2.7.2.jar 二、启动后直接使用sp

coderlaw's study 800
上一篇: DataX离线数据同步
下一篇: 大数据环境中的系统磁盘的常见问题
Yore Yuen
博客等级 码龄9年 8646粉丝 58原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yore Yuen

你的支持认可是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值