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

本文详细介绍了Apache CarbonData 1.5.2的编译部署步骤,包括环境配置、编译过程、验证安装及在Spark on YARN集群上的集成。CarbonData是一种用于大数据平台的高性能列式存储解决方案,提供与Spark、Hive等框架的集成,加速查询速度。文章还涵盖了在Spark Shell中创建表、加载数据以及使用Thrift服务器执行查询的实践操作。
摘要由CSDN通过智能技术生成

简介:

  1. Apache CarbonData是在Apache Hadoop、Apache Spark等大数据平台上实现快速分析的索引柱状数据存储解决方案。
  2. Apache CarbonData 是一种新的融合存储解决方案,利用先进的列式存储,索引,压缩和编码技术提高计算效率,从而加快查询速度,其查询速度比 PetaBytes 数据快一个数量级。
  3. Apache CarbonData是首个由中国公司发起并捐献给Apache基金会的开源项目,于2017年4月正式成为Apache顶级项目,由华为开源并支持Hadoop的高性能列式存储文件格式,其目的是提供一种统一的数据存储方案,以一份数据同时支持大数据分析的多种应用场景,All In One,并通过多级索引、字典编码、列式存储等特性提升 I/O 扫描和计算性能,实现百亿数据级秒级响应。
  4. 目前Apache CarbonData与Spark,Presto, Hive等框架做了集成,其中与Spark的集成最深入,提供了基于索引、预聚合、全局字典等更多查询优化手段来提升性能,也提供了数据更新、删除、增量入库等数据管理能力,可以说是在Spark开源框架上针对数据仓库类应用的增强。一个计算框架方面的All In One,一个存储格式方面的All In One,其实CarbonData的功能已经远远超越了数据格式的范畴了。

网址:

  1. 官网:
    http://carbondata.apache.org
  2. Github:
    https://github.com/apache/carbondata
  3. Apache CarbonData 中文文档:
    http://carbondata.iteblog.com/index.html
  4. CarbonData学习资料:
    https://github.com/xubo245/CarbonDataLearning
  5. 下载页面,笔者下载的是1.5.2版本的源码:
    https://dist.apache.org/repos/dist/release/carbondata/1.5.2/ 

安装编译环境:

官网要求

  1. Unix-like environment (Linux, Mac OS X)
  2. Git
  3. Apache Maven (Recommend version 3.3 or later)
  4. Oracle Java 7 or 8
  5. Apache Thrift 0.9.3

笔者环境

  1. CentOS release 6.10 (Final)
  2. git version 1.7.1
  3. Apache Maven 3.5.0
  4. java version "1.8.0_131"
  5. Apache Thrift 0.9.3
  6. CDH 5.13.1
  7. Apache Spark 2.3.2
  8. Apache CarbonData 1.5.2

编译前准备:

下载安装包

  1. 根据之前给出的下载地址下载1.5.2版本的安装包
     
  2. 将下载好的安装包上传到服务器的/opt/software目录下,如果没有该目录,可以使用以下命令进行创建:

    mkdir -p /opt/software
    cd /opt/software

  3. 上传完成如下图所示:
  4. 解压安装包,并移动到/opt/apps目录下:

    mkdir -p /opt/apps
    unzip apache-carbondata-1.5.2-source-release.zip
    mv carbondata-parent-1.5.2/ /opt/apps/
    cd /opt/apps/carbondata-parent-1.5.2/

  5. 配置pom.xml文件,加入cloudera依赖库的配置:

        <repository>
          <id>cloudera</id>
          <name>cloudera Repository</name>
          <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
        </repository>

  6. 配置后如下图所示:
  7. 保存退出。

编译:

  1. 执行以下命令开始编译,需要等待十五六分钟的样子,主要还是看网速了:

    mvn -DskipTests -Pspark-2.3 -Phadoop-2.8 -Pbuild-with-format -Pmv -Dspark.version=2.3.2 -Dhadoop.version=2.6.0-cdh5.13.1 clean package

  2. 编译成功截图:
     
  3. 编译成功后会在/opt/apps/carbondata-parent-1.5.2/assembly/target/scala-2.11/目录下生成编译好的jar包:
  4. 编译成功!

验证:

  1. 创建 sample.csv 文件,将数据加载到 CarbonData 需要使用到这个 CSV 文件。
    1. mkdir /opt/testData
      cd /opt/testData
    2. 执行以下命令:
      cat > sample.csv << EOF
      id,name,city,age
      1,david,shenzhen,3
      1 2,eason,shenzhen,27
      3,jarry,wuhan,35
      EOF

      如下图所示:

      然后上传到hdfs上:
      cd ..
      hdfs dfs -put testData/ /
  2. 在 Spark 安装目录下使用以下命令启动 Spark Shell:

    ./bin/spark-shell --jars /opt/apps/carbondata-parent-1.5.2/assembly/target/scala-2.11/apache-carbondata-1.5.2-bin-spark2.3.2-hadoop2.6.0-cdh5.13.1.jar

  3. 启动成功:

     
  4. SparkSession 可以通过访问 spark;而 SparkContext 可以通过访问 sc 。
  5. 创建CarbonSession
    1. 引入下面的类:

      import org.apache.spark.sql.SparkSession
      import org.apache.spark.sql.CarbonSession._

    2. 创建 CarbonSession,以下<hdfs store path>需要替换成hdfs上的路径:

      val carbon = SparkSession.builder().config(sc.getConf).getOrCreateCarbonSession("<hdfs store path>")

    3. 注:
      1. 默认情况下,Metastore 位置指向 ../carbon.metastore, 用户可以将自己的 metastore 位置提供给 CarbonSession
      2. <hdfs store path>和<local metastore path>需要替换成hdfs上的路径和本地路径,比如:
        SparkSession.builder().config(sc.getConf) .getOrCreateCarbonSession("<hdfs store path>", "<local metastore path>")

         

  6. 创建一个表:
    carbon.sql("CREATE TABLE IF NOT EXISTS test_table(id string, name string, city string, age Int) STORED BY 'carbondata'")
    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== 创建表的过程中可能会出现hdfs写权限不足的问题:
    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
    解决办法:

1.可以将root用户加入到hdfs的supergroup组中:

                  1、在Linux执行如下命令增加supergroup groupadd supergroup
                  2、如将用户root增加到supergroup中,再执行: usermod -a -G supergroup root
                  3、同步系统的权限信息到HDFS:su - hdfs -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"

2.可以禁用hdfs的权限校验机制,在cloudera manager管理界面,进入hdfs的配置页,找到以下配置,将对勾取消即可:

                   wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  1. 将数据加载到表中:

    carbon.sql("LOAD DATA INPATH 'hdfs://hadoop-cluster/testData/sample.csv' INTO TABLE test_table")

  2. 从表中查询数据:
    1. carbon.sql("SELECT * FROM test_table").show()
      carbon.sql("SELECT city, avg(age), sum(age) FROM test_table GROUP BY city").show()

       

    2. 结果如下图所示:
      wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

在 Spark on YARN 模式的集群上安装和配置 CarbonData

前置条件

  1. Hadoop HDFS 和 Yarn 需要安装和运行。
  2. Spark 需要在所有的集群节点上安装并且运行。
  3. CarbonData 用户需要有权限访问 HDFS.

步骤
以下步骤仅针对于 Driver 程序所在的节点. (Driver 节点就是启动 SparkContext 的节点)

  1. 将之前编译好的CarbonData jar包复制到 $SPARK_HOME/carbonlib 文件夹。如果 $SPARK_HOME 路径下不存在 carbonlib 文件夹,请事先创建它。
  2. 从CarbonData源码目录下复制./conf/carbon.properties.template文件到$SPARK_HOME/conf/文件夹下面,并将它重命名为 carbon.properties。
  3. 压缩 carbonlib 文件夹的内容到tar.gz 文件中,并将这个压缩文件移到 carbonlib 文件夹下面。

    cd $SPARK_HOME
    tar -zcvf carbondata.tar.gz carbonlib/
    mv carbondata.tar.gz carbonlib/

  4. 在 $SPARK_HOME/conf/spark-defaults.conf 文件中配置下面的属性。

    spark.master=yarn-client
    spark.yarn.dist.files=/opt/apps/spark/conf/carbon.properties
    spark.yarn.dist.archives=/opt/apps/spark/carbonlib/carbondata.tar.gz
    spark.executor.extraJavaOptions=-Dcarbon.properties.filepath=carbon.properties
    spark.executor.extraClassPath=carbondata.tar.gz/carbonlib/*
    spark.driver.extraClassPath=/opt/apps/spark/carbonlib/*
    spark.driver.extraJavaOptions=-Dcarbon.properties.filepath=/opt/apps/spark/conf/carbon.properties

  5. 将下面的配置添加到 $SPARK_HOME/conf/carbon.properties 文件中:

    carbon.storelocation=hdfs://hadoop-cluster/carbonstore

  6. 将以上的配置的操作和carbon编译好的jar包都分发的集群的其他节点上。
  7. 验证安装:

    ./bin/spark-shell --master yarn-client --driver-memory 1g --executor-cores 2 --executor-memory 2G

使用 CarbonData Thrift 服务器执行查询

  1. 服务启动命令:

    ./bin/spark-submit \
     --conf spark.sql.hive.thriftServer.singleSession=true \
     --num-executors 3 \
     --driver-memory 2g \
     --executor-memory 4g \
     --executor-cores 10 \
     --class org.apache.carbondata.spark.thriftserver.CarbonThriftServer \
     /opt/apps/spark/carbonlib/apache-carbondata-1.5.2-bin-spark2.3.2-hadoop2.6.0-cdh5.13.1.jar hdfs://hadoop-cluster/carbonstore

  2. 使用 Beeline 连接 CarbonData Thrift Server:

    ./bin/beeline -u jdbc:hive2://<thriftserver_host>:port

  3. 大功告成!

 

参考文档:CarbonData源码浅析一:Create Table

                  Apache CarbonData 1.4.0 中文文档

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值