Update(Stage5):Kudu_javaApi使用_Spark整合
Table of Contents:
- 2.3. 安装 Zookeeper
- 2.4. 安装 Hadoop
- 2.4. 安装 MySQL
- 2.5. 安装 Hive
- 2.6. 安装 Kudu
- 2.7. 安装 Impala
- 2.8. 安装 Hue
- 2.8. 使用 Scala 操作 Kudu
- 2.9. 使用 Spark 操作 Kudu
- 2.10. 使用 Impala 执行 SQL 语句访问 Hive
2.3. 安装 Zookeeper
| 主机名 | 是否有 Zookeeper |
|---|---|
|
|
有 |
|
|
有 |
|
|
有 |
Step 1: 安装Zookeeper-
和以往不同,
CDH版本的Zookeeper是经过定制的, 所以可以直接通过Yum来安装, 使用刚才所搭建的Yum仓库, 在所有节点上执行如下命令yum install -y zookeeper zookeeper-serverCDH版本的所有工具都会遵循Linux的习惯放置Log和Data, 所以需要先创建Zookeeper的数据目录, 并且所有者指定给Zookeeper所使用的用户, 如下命令在所有节点执行mkdir -p /var/lib/zookeeper
chown -R zookeeper /var/lib/zookeeper/
Step 2: 配置Zookeeper-
在使用
Apache版本的Zookeeper时, 我们需要自己创建Myid文件, 现在使用CDH版本的Zookeeper已经为我们提供了对应的Shell程序, 在所有节点执行如下命令, 注意myid参数, 在不同节点要修改myidservice zookeeper-server init --myid=1Zookeeper想要组成集群的话, 必须要修改配置文件, 配置整个集群的服务器地址,CDH版本的Zookeeper默认配置文件在/etc/zookeeper/conf/zoo.cfg, 修改这个文件增加服务器地址, 在所有节点上修改Zookeeper的配置文件增加如下server.1=cdh01:2888:3888
server.2=cdh02:2888:3888
server.3=cdh03:2888:3888
Step 3: 在所有节点启动Zookeeper并检查-
启动
CDH版本的Zookeeper也是通过Service的方式service zookeeper-server start因为 Zookeeper 的搭建比较复杂, 启动完成后可以通过 CDH 提供的命令, 或者使用 Zookeeper 的四字命令来查看是否状态正常
zookeeper-server status
echo mntr | nc cdh01 2181 //查看cdh01上的zookeeper的状态统计,可以在cdh01,cdh02或cdh03上执行该命令
echo stat | nc cdh03 2181
CDH 版本的组件有一个特点, 默认情况下配置文件在 /etc 对应目录, 日志在 /var/log 对应目录, 数据在 /var/lib 对应目录, 例如说 Zookeeper, 配置文件放在 /etc/zookeeper 中, 日志在 /var/log/zookeeper中, 其它的组件也遵循这样的规律 |
2.4. 安装 Hadoop
安装软件包
配置 HDFS
配置 Yarn 和 MapReduce
| 主机名 | 职责 |
|---|---|
|
|
|
|
|
|
|
|
|
Step 1: 安装Hadoop软件包-
CDH版本的Hadoop安装主要思路如下下载软件包
配置各个组件
启动各个组件
所以第一步, 应该先安装
Hadoop的软件包, 只有软件包已经下载, 才能进行相应组件的配置, 根据集群规划进行安装根据集群规划, cdh01 中应该如下安装软件包
yum -y install hadoop hadoop-yarn-resourcemanager hadoop-yarn-nodemanager hadoop-hdfs-secondarynamenode hadoop-hdfs-namenode hadoop-hdfs-datanode hadoop-mapreduce hadoop-mapreduce-historyserver hadoop-client根据集群规划, cdh02 和 cdh03 中应该如下安装软件包
yum -y install hadoop hadoop-yarn-nodemanager hadoop-hdfs-datanode hadoop-mapreduce hadoop-client Step 2: 配置HDFS-
配置文件的思路
在
CDH版本的组件中, 配置文件是可以动态变更的本质上,
CDH各组件的配置文件几乎都分布在/etc目录中, 例如Hadoop的配置文件就在/etc/hadoop/conf中, 这个conf目录是Hadoop当前所使用的配置文件目录, 但是这个目录其实是一个软链接, 当希望更改配置的时候, 只需要在/etc/hadoop中创建一个新的目录, 然后将conf指向这个新目录即可但是因为各个组件的
conf目录对应了多个目录, 还需要修改其指向, 管理起来很麻烦, 所以CDH使用了Linux一个非常厉害的功能, 可以配置一个目录可以指向的多个目录, 同时可以根据优先级确定某个目录指向谁, 这个工具叫做alternatives, 有如下几个常见操作alternatives --install讲一个新目录关联进来, 并指定其 ID 和优先级alternatives --set设置其指向哪个目录alternatives --display展示其指向哪个目录
在所有节点中复制原始配置文件并生成新的配置目录, 让
Hadoop使用使用新的配置目录这样做的目的是尽可能的保留原始配置文件, 以便日后恢复, 所以在所有节点中执行如下操作
创建新的配置目录
cp -r /etc/hadoop/conf.empty /etc/hadoop/conf.itcast链接过去, 让
Hadoop读取新的目录# 关联新的目录和 conf
alternatives --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.itcast 50
# 设置指向
alternatives --set hadoop-conf /etc/hadoop/conf.itcast
# 显式当前指向
alternatives --display hadoop-conf
在所有节点的新配置目录
/etc/hadoop/conf.itcast中, 修改配置文件vi /etc/hadoop/conf.itcast/core-site.xml<property>
<name>fs.defaultFS</name>
<value>hdfs://cdh01:8020</value>
</property>vi /etc/hadoop/conf.itcast/hdfs-site.xml<property>
<name>dfs.namenode.name.dir</name>
<value>file:///var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///var/lib/hadoop-hdfs/cache/hdfs/dfs/data</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>cdh01:50070</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
在所有节点中, 创建配置文件指定的
HDFS的NameNode和DataNode存放数据的目录, 并处理权限如下创建所需要的目录
mkdir -p /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
mkdir -p /var/lib/hadoop-hdfs/cache/hdfs/dfs/data因为
CDH比较特殊, 其严格按照Linux用户来管理和启动各个服务, 所以HDFS启动的时候使用的是hdfs用户组下的用户hdfs, 需要创建文件后进行权限配置chown -R hdfs:hdfs /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
chown -R hdfs:hdfs /var/lib/hadoop-hdfs/cache/hdfs/dfs/data
chmod 700 /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
chmod 700 /var/lib/hadoop-hdfs/cache/hdfs/dfs/data
格式化
NameNode, 当然, 这个命令只能在cdh01上执行, 只能执行一次sudo -u hdfs hdfs namenode -format启动
HDFScdh01上和HDFS有关的服务有NameNode,SecondaryNameNode, 使用如下命令启动这两个组件service hadoop-hdfs-namenode start
service hadoop-hdfs-secondarynamenode start在
cdh02和cdh03上执行如下命令service hadoop-hdfs-datanode start
Step 3: 配置Yarn和MapReduce-
前面已经完成配置目录创建等一系列任务了, 所以在配置
Yarn的时候, 只需要去配置以下配置文件即可在所有节点上, 配置
Yarn和MapReduce修改
Yarn和MapReduce配置文件vi /etc/hadoop/conf.itcast/mapred-site.xml<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>cdh01:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>cdh01:19888</value>
</property>
<property>
<name>hadoop.proxyuser.mapred.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.mapred.hosts</name>
<value>*</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/user</value>
</property>vi /etc/hadoop/conf.itcast/yarn-site.xml<property>
<name>yarn.resourcemanager.hostname</name>
<value>cdh01</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>
$HADOOP_CONF_DIR,
$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,
$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,
$HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,
$HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*
</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>file:///var/lib/hadoop-yarn/cache/${user.name}/nm-local-dir</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>file:///var/log/hadoop-yarn/containers</value>
</property>
<property>
<name>yarn.log.aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>hdfs:///var/log/hadoop-yarn/apps</value>
</property>
在所有节点上, 创建配置文件指定的存放数据的目录
创建
Yarn所需要的数据目录mkdir -p /var/lib/hadoop-yarn/cache
mkdir -p /var/log/hadoop-yarn/containers
mkdir -p /var/log/hadoop-yarn/apps赋予
Yarn用户这些目录的权限chown -R yarn:yarn /var/lib/hadoop-yarn/cache /var/log/hadoop-yarn/containers /var/log/hadoop-yarn/apps
为
MapReduce准备HDFS上的目录, 因为是操作HDFS, 只需要在一个节点执行即可大致上是需要两种文件夹, 一种用做于缓存, 一种是用户目录
为
MapReduce缓存目录赋权sudo -u hdfs hadoop fs -mkdir /tmp
sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
sudo -u hdfs hadoop fs -mkdir -p /user/history
sudo -u hdfs hadoop fs -chmod -R 1777 /user/history
sudo -u hdfs hadoop fs -chown mapred:hadoop /user/history为
MapReduce创建用户目录sudo -u hdfs hadoop fs -mkdir /user/$USER
sudo -u hdfs hadoop fs -chown $USER /user/$USER
启动
Yarn在
cdh01上启动ResourceManager和HistoryServerservice hadoop-yarn-resourcemanager start
service hadoop-mapreduce-historyserver start在
cdh02和cdh03上启动NodeManagerservice hadoop-yarn-nodemanager start
2.4. 安装 MySQL
安装 MySQL 有很多方式, 可以直接准备压缩包上传解压安装, 也可以通过 Yum 来安装, 从方便和是否主流两个角度来看, 通过 Yum 来安装会比较舒服, MySQL 默认是单机的, 所以在一个主机上安装即可, 我们选择在 cdh01 上安装, 安装大致就是两个步骤
安装
配置
Step 1: 安装-
因为要从
Yum安装, 但是默认的Yum源是没有MySQL的, 需要导入Oracle的源, 然后再安装下载
Yum源配置wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
rpm -ivh mysql-community-release-el6-5.noarch.rpm安装 MySQL
yum install -y mysql-server
Step 2: 启动和配置-
现在
MySQL的安全等级默认很高, 所以要通过一些特殊的方式来进行密码设置, 在启动MySQL以后要单独的进行配置启动
MySQLservice mysqld start通过
MySQL提供的工具, 设置root密码mysql_secure_installation
2.5. 安装 Hive
因为 Hive 需要使用 MySQL 作为元数据库, 所以需要在 MySQL 为 Hive 创建用户, 创建对应的表
安装
Hive软件包在
MySQL中增加Hive用户配置
Hive初始化
Hive在MySQL中的表结构启动
Hive
因为我们并不需要 Hive 的 HA, 所以在单机部署 Hive 即可
Step 1: 安装Hive软件包-
安装
Hive依然使用CDH的Yum仓库
yum install -y hive hive-metastore hive-server2如果想要
Hive使用MySQL作为元数据库, 那需要给Hive一个MySQL的JDBC包yum install -y mysql-connector-java
ln -s /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib/mysql-connector-java.jar
Step 2:MySQL中增加Hive用户-
进入
MySQLmysql -u root -p为
Hive创建数据库CREATE DATABASE metastore;
USE metastore;创建
Hive用户CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';为
Hive用户赋权REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'hive'@'%';
GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'%';
FLUSH PRIVILEGES;
Step 3: 配置Hive-
在启动
Hive之前, 要配置Hive一些参数, 例如使用MySQL作为数据库之类的配置Hive的配置文件在/etc/hive/conf/hive-site.xml, 修改它为如下内容<!-- /usr/lib/hive/conf/hive-site.xml -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://cdh01/metastore</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<property>
<name>datanucleus.autoCreateSchema</name>
<value>false</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoStartMechanism</name>
<value>SchemaTable</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://cdh01:9083</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>true</value>
</property>
<property>
<name>hive.support.concurrency</name>
<description>Enable Hive's Table Lock Manager Service</description>
<value>true</value>
</property>
<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property>
<property>
<name>hive.zookeeper.quorum</name>
<value>cdh01</value>
</property> Step 4: 初始化表结构-
使用
Hive之前,MySQL中还没有任何内容, 所以需要先为Hive初始化数据库, 创建必备的表和模式.Hive提供了方便的工具, 提供MySQL的连接信息, 即可帮助我们创建对应的表/usr/lib/hive/bin/schematool -dbType mysql -initSchema -passWord hive -userName hive -url jdbc:mysql://cdh01/metastore Step 5: 启动Hive-
默认版本的
Hive只提供了一个Shell命令, 通过这一个单独的Shell命令以指定参数的形式启动服务, 但是CDH版本将Hive抽取为两个独立服务, 方便通过服务的形式启动Hive,hive-metastore是元数据库,hive-server2是对外提供连接的服务service hive-metastore start
service hive-server2 start通过
beeline可以连接Hive验证是否启动成功, 启动beeline后, 通过如下字符串连接Hive!connect jdbc:hive2://cdh01:10000 username password org.apache.hive.jdbc.HiveDriver
2.6. 安装 Kudu
安装 Kudu 依然使用我们已经配置好的 Yum 仓库来进行, 整体步骤非常简单, 但是安装上分为 Master 和 Tablet server
安装 Master server
安装软件包
配置
启动
安装 Tablet server
安装软件包
配置
启动
| 节点 | 职责 |
|---|---|
|
|
|
|
|
|
|
|
|
Step 1: 安装Master server的软件包-
根据集群规划, 尽量让
cdh01少一些负载, 所以只在cdh01上安装Master server, 命令如下yum install -y kudu kudu-master kudu-client0 kudu-client-devel Step 2: 配置Master server-
Kudu的Master server没有太多可以配置的项目, 默认的话日志和数据都会写入到/var目录下, 只需要修改一下BlockManager的方式即可, 在虚拟机上使用Log方式可能会带来一些问题, 改为File方式:vim /etc/kudu/conf/master.gflagfile
光标到最后一行,在最后面添加上: --block_manager=file但是有一点需要注意, 一定确保
ntp服务是开启的, 可以使用ntpstat来查看, 因为Kudu对时间同步的要求非常高,ntp必须可以自动同步# 查看时间是否是同步状态
ntpstat Step 3: 运行Master server-
运行
Master serverservice kudu-master start查看
Web ui确认Master server已经启动http://cdh01:8051/
Step 4: 安装Tablet server的软件包-
根据集群规划, 在
cdh02,cdh03中安装Tablet server, 负责更为繁重的工作yum install -y kudu kudu-tserver kudu-client0 kudu-client-devel Step 5: 配置Tablet server-
Master server相对来说没什么需要配置的, 也无须知道各个Tablet server的位置, 但是对于Tablet server来说, 必须配置Master server的位置, 因为一般都是从向主注册自己在
cdh02,cdh03修改/etc/kudu/conf/tserver.gflagfile为如下内容, 如果有多个Master server实例, 用逗号分隔地址即可--tserver_master_addrs=cdh01:7051同时
Tablet server也需要设置BlockManager--block_manager=file Step 6: 运行Tablet server-
启动
service kudu-tserver start通过
Web ui查看是否已经启动成功http://cdh02:8050/
注意:
# kudu-master's RPC port is 7051, its http port is 8051
# kudu-tserver's RPC port is 7050, its http port is 8050
2.7. 安装 Impala
Kudu 没有 SQL 解析引擎, 因为 Cloudera 准备使用 Impala 作为 Kudu 的 SQL 引擎, 所以既然使用 Kudu 了, Impala 几乎也是必不可少的, 安装 Impala 之前, 先了解以下 Impala 中有哪些服务
| 服务 | 作用 |
|---|---|
|
|
|
|
|
|
|
|
|
所以, cdh01 上应该有 Catalog 和 StateStore, 而不应该有 ImpalaServer, 因为 cdh01 中没有 DataNode
安装
cdh01中的软件包安装其它节点中所需的软件包
对所有节点进行配置
启动
| 节点 | 职责 |
|---|---|
|
|
|
|
|
|
|
|
|
Step 1: 安装软件包-
安装主节点
cdh01所需要的软件包yum install -y impala impala-state-store impala-catalog impala-shell安装其它节点所需要的软件包
yum install -y impala impala-server
Step 2: 针对所有节点进行配置-
软链接
Impala所需要的Hadoop配置文件, 和Hive的配置文件Impala需要访问Hive的MetaStore, 所以需要hive-site.xml来读取其位置Impala需要访问HDFS, 所以需要读取hdfs-site.xml来获取访问信息, 同时也需要读取core-site.xml获取一些信息ln -s /etc/hadoop/conf/core-site.xml /etc/impala/conf/core-site.xml
ln -s /etc/hadoop/conf/hdfs-site.xml /etc/impala/conf/hdfs-site.xml
ln -s /etc/hive/conf/hive-site.xml /etc/impala/conf/hive-site.xml配置
Impala的主服务位置, 以供ImpalaServer(Impalad)访问, 修改Impala的默认配置文件/etc/default/impala, 3个节点都要修改:(/etc/default/目录下,往往放置CDH版本中各组件的默认的配置文件)IMPALA_CATALOG_SERVICE_HOST=cdh01
IMPALA_STATE_STORE_HOST=cdh01
另外,指定kudu_master节点的位置(也可以以后执行时在参数中手动指定,不过一般在这边指定好了先),在IMPALA_SERVER_ARGS后面添加--kudu_master_hosts=cdh01:7051:IMPALA_SERVER_ARGS=" \
-log_dir=${IMPALA_LOG_DIR} \
-catalog_service_host=${IMPALA_CATALOG_SERVICE_HOST} \
-state_store_port=${IMPALA_STATE_STORE_PORT} \
-use_statestore \
-state_store_host=${IMPALA_STATE_STORE_HOST} \
-be_port=${IMPALA_BACKEND_PORT}
--kudu_master_hosts=cdh01:7051"
Step 3: 启动-
启动 cdh01
service impala-state-store start
service impala-catalog start 注意:启动时可能会报错:
原因:/etc/hosts的配置问题。
解决方法:
vim /etc/hosts (记得,只需要修改cdh01的hosts)

可以将红框中的配置的主机名去掉,也可以将第一行移动到最后一行。此次,我是将红框中的主机名配置去掉了。
启动其它节点
service impala-server start通过 Web ui 查看是否启动成功
http://cdh01:25000
2.8. 安装 Hue
Hue 其实就是一个可视化平台, 主要用于浏览 HDFS 的文件, 编写和执行 Hive 的 SQL, 以及 Impala 的 SQL, 查看数据库中数据等, 而且 Hue 一般就作为 CDH 数据平台的入口, 所以装了 CDH 而不装 Hue 会觉得少了点什么, 面试的时候偶尔也会问 Hue 的使用, 所以我们简单安装, 简单使用 Hue 让大家了解以下这个可视化工具
Hue组件安装配置
Hue启动
Hue
Hue 只在 cdh01 上安装即可
Step 1:Hue组件安装-
使用
Yum即可简单安装yum -y install hue Step 2: 配置Hue-
Hue的配置就会稍微优点复杂, 因为Hue要整合其它的一些工具, 例如访问HDFS, 所以配置要从两方面说, 一是HDFS要允许Hue访问, 二是配置给Hue如何访问HDFS(以及如何访问其它程序)配置
HDFS, 允许Hue的访问修改
hdfs-site.xml增加如下内容, 以便让Hue用户可以访问HDFS中的文件<property>
<name>hadoop.proxyuser.hue.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hue.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.httpfs.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.httpfs.groups</name>
<value>*</value>
</property>配置
Hue, 告诉Hue如何访问其它组件和工具配置
Hue所占用的Web端口, 在/etc/hue/conf/hue.ini中搜索http_port修改为如下http_host=cdh01
http_port=8888配置
Impala的访问方式, 在/etc/hue/conf/hue.ini中搜索server_host修改为如下server_host=cdh01配置
Hive的访问方式, 在/etc/hue/conf/hue.ini中搜索hive_server_host修改为如下hive_server_host=cdh01
Step 3: 启动Hue-
使用如下命令即可启动
service hue start进入web界面: 输入网址: http://cdh01:8888/ 默认初始凭据: admin/admin 小结:
| 服务 | 命令 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CDH版本的特点:

2.8. 使用 Scala 操作 Kudu
Kudu API结构导入
Kudu所需要的包创建表
插入数据
查询数据
Kudu API的结构设计-
对象 设计 Client- 创建
-
使用
Kudu master服务器地址列表来创建 - 作用
-
Kudu的API主入口, 通过Client对象获取Table后才能操作数据 - 操作
-
检查表是否存在
提交表的
DDL操作, 如create,delete,alter, 在对表进行DDL的时候, 需要如下两个对象Kudu Schema定义表的列结构Kudu Partial Row指定分区方式
创建
Table对象
Table- 创建
-
通过
Client对象开启 - 作用
-
通过
Table对象可以操作表中的数据 - 操作
-
insert,delete,update,upsert行扫描行
Scanner- 创建
-
通过
Table对象开启扫描 - 作用
-
扫描表数据, 并获取结果
- 操作
-
Kudu中可以通过读取模式空值该读到哪些数据, 有如下三种读取模式READ_LATEST是Scanner的默认模式, 只会返回已经提交的数据, 类似ACID中的ReadCommittedREAD_AT_SNAPSHOT读取某一个时间点的数据, 这个模式效率相对比较低, 因为会等待这个时间点之前的所有事务都提交后, 才会返回响应的数据, 类似ACID中的RepeatableReadREAD_YOUR_WRITES这种模式会确保读取到自己已经写入的数据, 并且尽可能的忽略其他人的写入, 会导致读取期间有其它人写入但是没有等待, 所以产生的问题就是每次读取的数据可能是不同的, 当前还是实验性功能, 尽量不要使用
- 导入
Kudu所需要的包 -
Kudu并没有提供Scala单独的客户端SDK, 但是提供了Java的SDK, 我们使用Scala访问Kudu的时候, 可以使用Java的API, 可以创建一个新的工程开始Kudu Scala的学习, 创建工程的方式参照Spark部分第一天, 创建工程后, 需要先做如下两件事- 需要导入如下三个
Maven插件 -
maven-compile-pluginMaven的编译插件其实是自动导入的, 现在需要导入这个插件的目的主要是需要通过其指定JDK的版本maven-shade-plugin一般工程打包的方式有两种
uber Jar直译过来就是胖
Jar, 其中包含了所有依赖的Jar包, 通常会重命名其中一些类以避免冲突,non-uber Jar瘦
Jar, 没有包含依赖的Jar包, 在运行的时候使用环境中已有的库
scala-maven-plugin引入这个插件的主要作用是编译
Scala代码
举个栗子, 比如说现在在本地引入了 Spark的依赖, 要提交代码去集群运行, 但是集群中必然包含了Spark相关的所有依赖, 那么此时是否需要再生成Uber Jar了呢? 明显不需要, 因为Spark在安装部署集群的时候,Spark的软件包内, 有一个lib目录, 其中所有的Jar包在运行的时候都会被加载, 完全不需要Uber Jar再举个栗子, 比如说现在依然是引入 Spark的依赖, 但是同时引入了一个JSON解析的包, 但是这个JSON解析的包在集群中并没有, 那么此时如何解决? 有两种方式, 一种是Non-Uber Jar, 但是将依赖的Jar包在使用spark-submit命令提交任务的时候通过-jar参数一并提交过去. 另外一种是直接生成Uber Jar包含这个JSON解析库 - 需要导入一个
Kudu的依赖包 -
根据使用 Hadoop 的版本不同, Kudu 的导入方式有两种, 一种是 CDH 版本的依赖, 一种是 Apache 版本的依赖, 我们当前使用 CDH 版本的依赖, 所以需要导入如下包
<dependency>
<groupId>org.apache.kudu</groupId>
<artifactId>kudu-client</artifactId>
<version>1.7.0-cdh5.16.1</version>
<scope>provided</scope>
</dependency> - 整个
Maven文件,详见代码 -
- 需要导入如下三个
- 创建表(详见代码)
-
在进行如下操作之前, 需要先创建
Scala的类, 通过Junit的方式编写代码, 当然, 也可以创建Object, 编写Main方法来运行创建
KuduClient实例创建表的列模式
Schema创建表
- 插入数据
-
详见代码
- 扫描查询数据
-
详见代码。
2.9. 使用 Spark 操作 Kudu
2.10. 使用 Impala 执行 SQL 语句访问 Hive
Update(Stage5):Kudu_javaApi使用_Spark整合的更多相关文章
- Update(Stage5):Kudu入门_项目介绍_ CDH搭建
Kudu 导读 什么是 Kudu 操作 Kudu 如何设计 Kudu 的表 Table of Contents 1. 什么是 Kudu 1.1. Kudu 的应用场景 1.2. Kudu 和其它存储工 ...
- Update(Stage5):DMP项目_业务介绍_框架搭建
DMP (Data Management Platform) 导读 整个课程的内容大致分为如下两个部分 业务介绍 技术实现 对于业务介绍, 比较困难的是理解广告交易过程中各个参与者是干什么的 对于技术 ...
- JAVAEE——spring03:spring整合JDBC和aop事务
一.spring整合JDBC 1.spring提供了很多模板整合Dao技术 2.spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术. JDBCTemplate => JDBC模 ...
- Python成长之路第二篇(3)_字典的置函数用法
字典的置函数用法(字典dict字典中的key不可以重复) class dict(object): """ dict() -> new empty dictionar ...
- java大框架
本文章,列出了一些程序员需要学习的技术和知识点,有些技术和知识点没有写道,欢迎大家进行修改和补充,有些技术公司用到,大家需要先学习,有些技术和知识点过时,大家可以了解.本人笔记连接[[http://2 ...
- SprinBoot-SpringData-整合
目录 SpringData 整合JDBC JDBCTemplate 整合Druid 配置数据源 配置Druid数据源监控 整合MyBatis 整合测试 整合Redis 测试整合 序列化配置 自定义re ...
- SpringBoot整合Mybatis注解版---update出现org.apache.ibatis.binding.BindingException: Parameter 'XXX' not found. Available parameters are [arg1, arg0, param1, param2]
SpringBoot整合Mybatis注解版---update时出现的问题 问题描述: 1.sql建表语句 DROP TABLE IF EXISTS `department`; CREATE TABL ...
- ssh整合思想 Spring与Hibernate的整合ssh整合相关JAR包下载 .MySQLDialect方言解决无法服务器启动自动update创建表问题
除之前的Spring相关包,还有structs2包外,还需要Hibernate的相关包 首先,Spring整合其他持久化层框架的JAR包 spring-orm-4.2.4.RELEASE.jar ( ...
- spring boot 整合kafka 报错 Exception thrown when sending a message with key='null' and payload=JSON to topic proccess_trading_end: TimeoutException: Failed to update metadata after 60000 ms.
org.springframework.kafka.support.LoggingProducerListener- Exception thrown when sending a message w ...
随机推荐
- spring注解注入:<context:component-scan>以及其中的context:include-filter>和 <context:exclude-filter>的是干什么的?
转自:https://www.cnblogs.com/vanl/p/5733655.html spring注解注入:<context:component-scan>使用说明 sprin ...
- TCL create list from file
proc create_list {filename {prompt verbose} {opts "" }} { set list_return {} if {[file exi ...
- IntelliJ IDEA之如何设置JVM运行参数
步骤一: 点击IDEA右上角的 Edit Configurations 设置参数: -XX:+PrintGCDetails -Xmx128M -Xms128M 步骤二:在VM options中设置参数 ...
- Redis07——Redis五大数据类型 set
set Redis中set可以自动排重(不会出现重复数据),提供了判断某个成员是否在一个set集合内的重要接口(list没有此功能) 无序集合,底层是一个value为null的hash表,添加.删除. ...
- Visual C++ 2013 and Visual C++ Redistributable Package 更新版官网下载地址
Visual C++ 2013 and Visual C++ Redistributable Visual C++ 2013 and Visual C++ Redistributable Packag ...
- 题解【洛谷P2853】[USACO06DEC]牛的野餐Cow Picnic
题目描述 The cows are having a picnic! Each of Farmer John's \(K (1 ≤ K ≤ 100)\) cows is grazing in one ...
- 部署DVWA时的一些问题和解决办法(二)
DVWA reCAPTCHA key: Missing解决方法 编辑 dvwa/config/config.inc.php这个配置文件 $_DVWA[ 'recaptcha_public_key' ] ...
- 计算机二级-C语言-程序修改题-190108记录-字符串处理
//程序修改题:给定程序MODI1.C中函数fun的功能是:先将字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面.例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为 ...
- Win10安装.Net Framework4.7及更高版本
问题描述 使用VS打开项目工程时,提示未安装.net framework4.7,但在启用或关闭windows功能里已经勾选了.net framework 4.7的全部功能. 直接从网上下载.net f ...
- 拿到别人的Django程序如何在本地RUN起来
在Pycharm IDE下 Edit Configurations 1.检查Python interpreter 2.检查 Working directory 3.Settings 数据库配置