Hadoop

Check if a hive table is partitioned on a given column

大城市里の小女人 提交于 2021-02-17 04:42:12
问题 I have a list of hive tables , of which some are partitioned. Given a column I need to check if a particular table is partitioned on that column or not. I have searched and found that desc formatted tablename would result in all the details of the table. Since I have to iterate over all the tables and get the list , desc formatted would not help. Is there any other way this can be done. 回答1: You can connect directly to metastore and query it: metastore=# select d."NAME" as DATABASE, t."TBL

hadoop优化

限于喜欢 提交于 2021-02-16 23:18:29
从网上搜集的各种优化,标记下。 1. 网络带宽 Hadoop集群的服务器在规划时就在统一的交换机下,这是在官方文档中建议的部署方式。 但是我们的这台交换机和其他交换机的互联带宽有限,所以在客户端遇到了HDFS访问速度慢的问题。 把操作集群的客户端也联入DataNode的交换机内部,解决了这个问题。 2. 系统参数 对ulimit -c的修改也是官方文档建议的修改,在集群只有10台服务器时,并没有遇到问题。 随着机器增加和任务增加,这个值需要改的更大。 3. 配置文件管理 这个集群用的是Cloudera发行的版本,配置文件默认存在/etc/hadoop/conf位置。这是一个只有root才能修改的位置。 为了修改方便,我把配置文件统一保存在一台机器上,修改后用脚本分发。保证所有服务器都是统一的配置。 4. mapred.tasktracker.map.tasks.maximum 这个参数控制每个TaskTracker同时运行的Map任务数。 以前的设置是和CPU核数相同的,偶尔遇到任务挤占DataNode资源的问题。 现在改成map+reduce+1==num_cpu_cores。 5. 严格控制root权限 Cloudera的发行版会创建一个hadoop用户,各种守护进程都应该以这个用户运行。 曾经有误操作(/usr/lib/hadoop/bin/hadoop datanode &

Hadoop优化 操作系统优化

你离开我真会死。 提交于 2021-02-16 22:53:18
1、优化文件系统,修改/etc/fstab 在defaults后面添加noatime,表示不记录文件的访问时间。 修改为: 如果不想重新启动操作系统使配置生效,那么应该执行: # mount -o remount /dev/mapper/centos-root # mount -o remount /dev/mapper/centos-home   当然,如果有其他的磁盘,同样可以这样操作,我这里测试就两个逻辑卷 2、预读缓冲 预读技术可以有效的减少磁盘寻道次数和应用的I/O等待时间,增加Linux文件系统预读缓冲区的大小(默认为256 sectors,128KB),可以明显提高顺序文件的读性能,建议调整到1024或2048 sectors。预读缓冲区的设置可以通过blockdev命令来完成。 blockdev 工具允许从命令行调用区块设备控制程序,常用参数如下:    -- getra 读取预读值    -- getfra 读取文件系统预读    -- setfra FSREADAHEAD 设置文件系统预读    -- setra READAHEAD 设置设备预读    -- getra 读取设备的预读值    -- setbsz BLOCKSIZE 在文件描述符打开块设备的时候设置块大小    -- getioopt 读取设备优化IO大小    -- getiomin

Hive安装及部署

血红的双手。 提交于 2021-02-16 22:04:14
1.Hive 安装及配置 (1)解压安装包到安装目录。    (2) 修改 apache-hive-1.2.1-bin.tar.gz 的名称为 hive。    (3) 修改 /opt/module/hive/conf 目录下的 hive-env.sh.template 名称为 hive-env.sh:$ mv hive-env.sh.template hive-env.sh (4) 配置 hive-env.sh 文件   ( a )配置 HADOOP_HOME 路径     export HADOOP_HOME=/opt/module/hadoop-2.7.2   ( b )配置 HIVE_CONF_DIR 路径     export HIVE_CONF_DIR=/opt/module/hive/conf 2.Hadoop 集群配置 ( 1 )必须启动 hdfs 和 yarn    $ sbin/start-dfs.sh   $ sbin/start-yarn.sh ( 2 )在 HDFS 上创建 /tmp 和 /user/hive/warehouse 两个目录并修改他们的同组权限可写   $ bin/hadoop fs -mkdir /tmp   $ bin/hadoop fs -mkdir -p /user/hive/warehouse   $ bin/hadoop fs

hive安装部署

旧巷老猫 提交于 2021-02-16 20:43:45
1、 准备环境 1, 软件准备 Java-- jdk-8u121-linux-x64.tar.gz Hadoop--hadoop-2.7.4.tar.gz (jdk1.7会报错) Hive-- apache-hive-1.2.1-bin.tar.gz 本系列 教程所有 jar 包,请关注微信公众号 : Spark 高级玩法 ,输入 software 获取。 C entos 6.5 是本文采用的操作系统 2, 安装 mysql yum install mysql-server -y 启动 mysql service mysqld status service mysqld start 加上账户密码 mysqladmin -u root password '123456' 添加开机启动 chkconfig mysqld on chkconfig -- list | grep mysqld 测试 mysql - uroot - p123456 整理认证权限 名字叫mysql的数据库中假如需要的认证。 重点强调一定要执行: flush privileges; 二,安装Hive 1. 本地安装测试 配置好HIVE_HOME等环境变量 # Hive export HIVE_HOME=/opt/modules/hive-1.2.1 export HIVE_CONF_DIR=$HIVE_HOME

Hive 的基本概念

僤鯓⒐⒋嵵緔 提交于 2021-02-16 19:36:56
Hadoop开发存在的问题 只能用java语言开发,如果是c语言或其他语言的程序员用Hadoop,存在语言门槛。 需要对Hadoop底层原理,api比较了解才能做开发。 Hive概述 Hive是基于Hadoop的一个 数据仓库工具 。可以将结构化的数据文件映射为一张表,并提供完整的sql查询功能, 可以将 sql 语句转换为 MapReduce 任务进行运行 。其优点是学习成本低,可以通过 类 SQL 语句快速实现MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行 数据提取、转化、加载( ETL Extract-Transform-Load ) , 也可以叫做数据清洗 ,这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HiveQL ,它允许熟悉 SQL 的用户查询数据。 Hive的Hql HQL - Hive通过类SQL的语法,来进行分布式的计算。HQL用起来和SQL非常的类似, Hive 在执行的过程中会将 HQL 转换为 MapReduce 去执行 ,所以Hive其实是基于Hadoop的一种分布式计算框架, 底层仍然是 MapReduce ,所以它本质上还是一种 离线大数据

漫谈数据仓库之维度建模

我是研究僧i 提交于 2021-02-16 10:12:18
0x00 前言 下面的内容,是笔者在学习和工作中的一些总结,其中概念性的内容大多来自书中,实践性的内容大多来自自己的工作和个人理解。由于资历尚浅,难免会有很多错误,望批评指正! 概述 数据仓库包含的内容很多,它可以包括架构、建模和方法论。对应到具体工作中的话,它可以包含下面的这些内容: 以Hadoop、Spark、Hive等组建为中心的数据架构体系。 各种数据建模方法,如维度建模。 调度系统、元数据系统、ETL系统、可视化系统这类辅助系统。 我们暂且不管数据仓库的范围到底有多大,在数据仓库体系中,数据模型的核心地位是不可替代的。为什么要数据仓库建模? 数据模型是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。有了适合业务和基础数据存储环境的模型,那么大数据就能获得以下好处: 性能 :良好的数据模型能帮助我们快速查询所需要的数据,减少数据的 I/O 吞吐。 成本 :良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果复用,极大的降低大数据系统中的存储和计算成本。 效率 :良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率。 质量 :良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。 因此,下面的将详细地阐述数据建模中的典型代表:维度建模,对它的的相关理论以及实际使用做深入的分析。 文章结构 本文将按照下面的顺序进行阐述:

大数据--hive查询

我们两清 提交于 2021-02-16 10:01:25
一、全表查询和特定列查询 1、全表查询: ------------------------------------------------------------------- hive (db_test)> select * from dept; OK dept.deptno dept.dname dept.loc 10 ACCOUNTING 1700 20 RESEARCH 1800 30 SALES 1900 40 OPERATIONS 1700 Time taken: 0.306 seconds, Fetched: 4 row(s) --------------------------------------------------------------- hive (db_test)> select * from emp; OK emp.empno emp.ename emp.job emp.mrg emp.hiredate emp.sal emp.comm emp.deptno 7369 SMITH CLERK 7902 1980-12-17 800.0 NULL 20 7499 ALLEN SALESMAN 7698 1981-2-20 1600.0 300.0 30 7521 WARD SALESMAN 7698 1981-2-22 1250.0 500.0 30

大数据之Hive

…衆ロ難τιáo~ 提交于 2021-02-16 09:45:11
Hive Author: Lijb Email: lijb1121@163.com Hive介绍: hive是基于Hadoop的一个数据仓库工具,可以用来进行数据踢群转换加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据机制。可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 ETL介绍: 什么是etl Extract-Transform-Load): 1、用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库。是一个数据清洗工具 2、实现ETL,首先要实现ETL转换的过程。体现为以下几个方面: 1、空值处理:可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。 2、规范化数据格式:可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。 3、拆分数据:依据业务需求对字段可进行分解。例,主叫号 861082585313-8148,可进行区域码和电话号码分解。 4、验证数据正确性:可利用Lookup及拆分功能进行数据验证。例如,主叫号861082585313-8148,进行区域码和电话号码分解后,可利用Lookup返回主叫网关或交换机记载的主叫地区

javaAPI操作Hbase

怎甘沉沦 提交于 2021-02-16 03:43:03
package chapter04; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Get; import org