前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >CDH离线数仓实操

CDH离线数仓实操

原创
作者头像
Anchoror
发布2024-12-27 14:20:33
发布2024-12-27 14:20:33
1010
举报

1.下载数据集

链接:https://github.com/markgrover/cloudcon-hive

2008.tar.gz:2008 年航班延误数据集。

airports.csv:将机场代码与其全称关联的数据集。

2.将数据集放到CDH某个节点的本地

通过xftp工具,把本机的文件拖到 slave1 节点的 /home/my_flight 下

3.本地数据上传到HDFS

-put命令,从本地文件系统拷贝到HDFS,其中/user/tmp/为hdfs中的路径

代码语言:bash
复制
hdfs dfs -put /home/my_flight  /user/tmp/

4.访问HIVE

Hive CLI --Hive CLI 进去感觉比较方便,不需要输入username 和 password

Hive CLI使用HiveServer1。Hive CLI使用Thrift协议连接到远程Hiveserver1实例。要连接到服务器,必须指定主机名。端口号是可选的。

代码语言:bash
复制
$hive -h <host_name> -p <port>

Beeline --Beeline 的输出格式化的更好,更直观

Beeline使用JDBC连接到远程HiveServer2实例。连接参数包括JDBC URL。

代码语言:bash
复制
$ beeline -u <url> -n <username> -p <password>

5.利用HIVE给HDFS文件建立元文件

  1. 查看数据库 show databases;
  2. 建立数据库creat databases my_flights;
  3. 建外部表
  4. Hive中表与外部表的区别:
  5. Hive 创建内部表时,会将数据移动到数据仓库指向的路径;
  6. Hive 创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变;
  7. 在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。
代码语言:sql
复制
CREATE external TABLE flight_data(
   year INT,
   month INT,
   day INT,
   day_of_week INT,
   dep_time INT,
   crs_dep_time INT,
   arr_time INT,
   crs_arr_time INT,
   unique_carrier STRING,
   flight_num INT,
   tail_num STRING,
   actual_elapsed_time INT,
   crs_elapsed_time INT,
   air_time INT,
   arr_delay INT,
   dep_delay INT,
   origin STRING,
   dest STRING,
   distance INT,
   taxi_in INT,
   taxi_out INT,
   cancelled INT,
   cancellation_code STRING,
   diverted INT,
   carrier_delay STRING,
   weather_delay STRING,
   nas_delay STRING,
   security_delay STRING,
   late_aircraft_delay STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
  1. 链接到外部HDFS文件
代码语言:batch
复制
LOAD DATA INPATH '/user/tmp/my_flights' INTO TABLE flight_data;

6.HIVE on MR操作

HIVE默认使用MR作为计算引擎,在HIVE中执行

代码语言:sql
复制
SELECT COUNT(*)	
FROM flight_data;

耗时一分左右,因为执行的是MR程序

7. HIVE on Spark操作

在CDH的HIVE中选择计算引擎为Spark。

再次尝试运行上述程序,发现运行失败,是因为本机是基于VMWARE的伪分布式环境,每个yarn节点配置的核心数和内存空间无法满足spark作业的要求,根据报错修改Yarn配置(注意每个节点都要修改)。

8.Spark on yarn提交作业

  1. 在本机安装JAVA环境,建立maven项目
  2. 配置好pom依赖
代码语言:xml
复制
  </repositories>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <scala.version>2.11.12</scala.version>
    <avro.version>1.8.2-cdh6.3.2</avro.version>
    <crunch.version>0.11.0-cdh6.3.2</crunch.version>
    <flume.version>1.9.0-cdh6.3.2</flume.version>
    <connector.version>hadoop3-1.9.10-cdh6.3.2</connector.version>
    <hadoop.version>3.0.0-cdh6.3.2</hadoop.version>
    <hbase.version>2.1.0-cdh6.3.2</hbase.version>
    <indexer.version>1.5-cdh6.3.2</indexer.version>
    <hive.version>2.1.1-cdh6.3.2</hive.version>
    <kafka.version>2.2.1-cdh6.3.2</kafka.version>
    <kitesdk.version>1.0.0-cdh6.3.2</kitesdk.version>
    <kudu.version>1.10.0-cdh6.3.2</kudu.version>
    <oozie.version>5.1.0-cdh6.3.2</oozie.version>
    <pig.version>0.17.0-cdh6.3.2</pig.version>
    <search.version>1.0.0-cdh6.3.2</search.version>
    <sentry.version>2.1.0-cdh6.3.2</sentry.version>
    <solr.version>7.4.0-cdh6.3.2</solr.version>
    <spark.version>2.4.0-cdh6.3.2</spark.version>
    <sqoop.version>1.4.7-cdh6.3.2</sqoop.version>
    <zookeeper.version>3.4.5-cdh6.3.2</zookeeper.version>
  </properties>
  
  
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_2.11</artifactId>
      <version>${spark.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-sql_2.11</artifactId>
      <version>${spark.version}</version>
    </dependency>

        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
          <configuration>
            <archive>
              <manifest>
                <mainClass>com.spark.SparkOnHive</mainClass>
              </manifest>
            </archive>
            <finalName>SparkOnHive</finalName>
          </configuration>
        </plugin>
  1. 制作jar包
代码语言:bash
复制
& mvn clean package -f "c:\Users\GRE\Desktop\SparkLearn\spark_java\pom.xml"
  1. 利用xftp提交jar包到节点
  2. 在yarn集群上运行spark程序(这是计算圆周率的样例程序)
代码语言:bash
复制
./spark-submit   --master yarn-cluster  --class org.apache.spark.examples.SparkPi ../lib/spark-examples-xx.jar 100

9.常用的一些监控web UI端口

  1. 8088 : Yarn 的WEB UI 接口
  2. 7077 : spark 的master与worker进行通讯的端口 standalone集群提交Application的端口
  3. 8080 : master的WEB UI端口 资源调度
  4. 8081 : worker的WEB UI 端口 资源调度
  5. 4040 : Driver的WEB UI 端口 任务调度
  6. 18080:Spark History Server的WEB UI 端口
  7. 7180: Cloudera Manager WebUI端口
  8. 7182: Cloudera Manager Server 与 Agent 通讯端口

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.下载数据集
  • 3.本地数据上传到HDFS
  • 4.访问HIVE
  • Hive CLI --Hive CLI 进去感觉比较方便,不需要输入username 和 password
  • Beeline --Beeline 的输出格式化的更好,更直观
  • 5.利用HIVE给HDFS文件建立元文件
  • 6.HIVE on MR操作
  • 7. HIVE on Spark操作
  • 8.Spark on yarn提交作业
  • 9.常用的一些监控web UI端口
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档