本教程将指导你通过以下两种模式安装和配置 CarbonData:
其次是 :
Hadoop HDFS 和 Yarn 需要安装和运行。
Spark 需要在所有的集群节点上安装并且运行。
CarbonData 用户需要有权限访问 HDFS.
编译 CarbonData 工程,并且从 ./assembly/target/scala-2.1x/carbondata_xxx.jar
路径获取 assembly jar。
将 ./assembly/target/scala-2.1x/carbondata_xxx.jar
文件复制到 $SPARK_HOME/carbonlib
目录。
注意: 如果 $SPARK_HOME
路径下不存在 carbonlib 文件夹,请事先创建它。
将 carbonlib 文件夹路径添加到 Spark classpath 中。 (编辑 $SPARK_HOME/conf/spark-env.sh
文件,然后修改 SPARK_CLASSPATH
属性,将 $SPARK_HOME/carbonlib/*
追加到现有值的后面)
从 CarbonData repository 复制 ./conf/carbon.properties.template
文件到 $SPARK_HOME/conf/
文件夹下面,并将它重命名为 carbon.properties
。
在集群上的所有节点重复执行步骤2到步骤5
在 Spark 集群的主节点的 $SPARK_HOME/conf/spark-defaults.conf
文件中配置下表提到的属性。
属性 | 值 | 描述 |
---|---|---|
spark.driver.extraJavaOptions | -Dcarbon.properties.filepath = $SPARK_HOME/conf/carbon.properties |
传递给 driver 的额外 JVM 选项。例如,GC 设置或其他日志记录。 |
spark.executor.extraJavaOptions | -Dcarbon.properties.filepath = $SPARK_HOME/conf/carbon.properties |
传递给 executors 的额外 JVM 选项。例如,GC 设置或其他日志记录。 注意: 多个属性值以空格分隔。 |
$SPARK_HOME/conf/carbon.properties
文件中:属性 | 是否必须 | 描述 | 示例 | 备注 |
---|---|---|---|---|
carbon.storelocation | NO | CarbonData 创建存储并以自己的格式写入数据的位置。如果没有配置这个属性将使用 spark.sql.warehouse.dir 配置的路径。 | hdfs://HOSTNAME:PORT/Opt/CarbonStore | 建议设置 HDFS 目录 |
./spark-shell --master spark://HOSTNAME:PORT --total-executor-cores 2
--executor-memory 2G
注意: 确保您拥有相关的权限。
开始使用 CarbonData 请参见 : 快速开始, CarbonData 数据管理
本节将介绍如何在 Spark on YARN 模式的集群上安装和配置 CarbonData。
以下步骤仅针对于 Driver 程序所在的节点. (Driver 节点就是启动 SparkContext 的节点)
编译 CarbonData 工程,并且从 ./assembly/target/scala-2.1x/carbondata_xxx.jar
路径获取 assembly jar。最后将这个 jar 复制到 $SPARK_HOME/carbonlib
文件夹。
注意: 如果 $SPARK_HOME
路径下不存在 carbonlib 文件夹,请事先创建它。
从 CarbonData repository 复制 ./conf/carbon.properties.template
文件到 $SPARK_HOME/conf/
文件夹下面,并将它重命名为 carbon.properties
。
压缩 carbonlib 文件夹的内容到tar.gz
文件中,并将这个压缩文件移到 carbonlib 文件夹下面。
cd $SPARK_HOME
tar -zcvf carbondata.tar.gz carbonlib/
mv carbondata.tar.gz carbonlib/
$SPARK_HOME/conf/spark-defaults.conf
文件中配置下表提到的属性。属性 | 描述 | 值 |
---|---|---|
spark.master | 设置该值使得我们可以在集群集模式下运行 Spark。 | 将此属性设置为 yarn-client 以便 Spark 可以以 yarn client 模式运行。 |
spark.yarn.dist.files | 逗号分隔的文件列表,这些文件将被放置到每个 executor 的工作目录中。 | $SPARK_HOME/conf/carbon.properties |
spark.yarn.dist.archives | 逗号分隔的档案文件列表,这些文件将被提取到每个 executor 的工作目录中。 | $SPARK_HOME/carbonlib/carbondata.tar.gz |
spark.executor.extraJavaOptions | 传递给 executors 的额外 JVM 选项。注意: 多个属性值以空格分隔。 | -Dcarbon.properties.filepath = carbon.properties |
spark.executor.extraClassPath | 传递给 executors 的额外 classpath 信息。注意: 如果 spark-env.sh 里面定义了 SPARK_CLASSPATH,请将它注释掉,并将其值添加到 spark.driver.extraClassPath 参数里面 | carbondata.tar.gz/carbonlib/* |
spark.driver.extraClassPath | 传递给 driver 的额外 classpath 信息。注意: 如果 spark-env.sh 里面定义了 SPARK_CLASSPATH,请将它注释掉,并将其值添加到 spark.driver.extraClassPath 参数里面 | $SPARK_HOME/carbonlib/* |
spark.driver.extraJavaOptions | 传递给 driver 的额外 JVM 选项。例如,GC 设置或其他日志记录。 | -Dcarbon.properties.filepath = $SPARK_HOME/conf/carbon.properties |
$SPARK_HOME/conf/carbon.properties
文件中:属性 | 是否必须 | 描述 | 示例 | 备注 |
---|---|---|---|---|
carbon.storelocation | NO | CarbonData 创建存储并以自己的格式写入数据的位置。如果没有配置这个属性将使用 spark.sql.warehouse.dir 配置的路径。 | hdfs://HOSTNAME:PORT/Opt/CarbonStore | 建议设置 HDFS 目录 |
./bin/spark-shell --master yarn-client --driver-memory 1g
--executor-cores 2 --executor-memory 2G
注意: 确保您拥有相关的权限。
开始使用 CarbonData 请参见: 快速开始, CarbonData 数据管理
a. cd $SPARK_HOME
b. 运行下面的命令来启动 CarbonData thrift server.
./bin/spark-submit
--class org.apache.carbondata.spark.thriftserver.CarbonThriftServer
$SPARK_HOME/carbonlib/$CARBON_ASSEMBLY_JAR <carbon_store_path>
属性 | 描述 | 示例 |
---|---|---|
CARBON_ASSEMBLY_JAR | $SPARK_HOME/carbonlib/ 文件夹下面 CarbonData assembly jar 的文件名。 |
carbondata_2.xx-x.x.x-SNAPSHOT-shade-hadoop2.7.2.jar |
carbon_store_path | CarbonThriftServer 类的参数。这是一个保存 CarbonData 文件的 HDFS 路径。强烈推荐将这个值设置成与 carbon.properties 文件中 carbon.storelocation 参数一样。如果没有配置这个属性将使用 spark.sql.warehouse.dir 配置的路径。 | hdfs://<host_name>:port/user/hive/warehouse/carbon.store |
注意: 从 Spark 1.6 开始,默认情况下,Thrift 服务器是以多会话模式(multi-session mode)运行。这意味着每个 JDBC/ODBC 连接都拥有自己的 SQL 配置和临时函数注册信息。但是缓存表仍然可以共享。
如果你希望以单会话模式(single-session mode)运行 Thrift 服务器并共享所有 SQL 配置和临时函数注册信息,请将 spark.sql.hive.thriftServer.singleSession
属性设置成 true
。
你可以在 spark-defaults.conf
文件里面设置,也可以通过 --conf
传递给 spark-submit.sh
:
./bin/spark-submit
--conf spark.sql.hive.thriftServer.singleSession=true
--class org.apache.carbondata.spark.thriftserver.CarbonThriftServer
$SPARK_HOME/carbonlib/$CARBON_ASSEMBLY_JAR <carbon_store_path>
但是 在单会话模式下,如果一个用户从一个连接改变数据库,其他连接的数据库也会改变。
示例
./bin/spark-submit
--class org.apache.carbondata.spark.thriftserver.CarbonThriftServer
$SPARK_HOME/carbonlib
/carbondata_2.xx-x.x.x-SNAPSHOT-shade-hadoop2.7.2.jar
hdfs://<host_name>:port/user/hive/warehouse/carbon.store
./bin/spark-submit
--class org.apache.carbondata.spark.thriftserver.CarbonThriftServer
--num-executors 3 --driver-memory 20g --executor-memory 250g
--executor-cores 32
/srv/OSCON/BigData/HACluster/install/spark/sparkJdbc/lib
/carbondata_2.xx-x.x.x-SNAPSHOT-shade-hadoop2.7.2.jar
hdfs://<host_name>:port/user/hive/warehouse/carbon.store
cd $SPARK_HOME
./sbin/start-thriftserver.sh
./bin/beeline -u jdbc:hive2://<thriftserver_host>:port
Example
./bin/beeline -u jdbc:hive2://10.10.10.10:10000