侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

yum安装CDH5.5 hive、impala的过程详解

技术  /  管理员 发布于 7年前   505

一、安装hive

组件安排如下:

172.16.57.75 bd-ops-test-75 mysql-server172.16.57.77 bd-ops-test-77 Hiveserver2 HiveMetaStore

1.安装hive

在77上安装hive:

# yum install hive hive-metastore hive-server2 hive-jdbc hive-hbase -y

在其他节点上可以安装客户端:

# yum install hive hive-server2 hive-jdbc hive-hbase -y

2.安装mysql

yum方式安装mysql:

# yum install mysql mysql-devel mysql-server mysql-libs -y

启动数据库:

# 配置开启启动# chkconfig mysqld on# service mysqld start

安装jdbc驱动:

# yum install mysql-connector-java# ln -s /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib/mysql-connector-java.jar

设置mysql初始密码为bigdata:

# mysqladmin -uroot password 'bigdata'

进入数据库后执行如下:

CREATE DATABASE metastore;USE metastore;SOURCE /usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-1.1.0.mysql.sql;CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive';GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'localhost';GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'%';FLUSH PRIVILEGES;

注意:创建的用户为 hive,密码为 hive ,你可以按自己需要进行修改。

修改 hive-site.xml 文件中以下内容:

<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://172.16.57.75:3306/metastore?useUnicode=true&characterEncoding=UTF-8</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property>

3.配置hive

修改/etc/hadoop/conf/hadoop-env.sh,添加环境变量 HADOOP_MAPRED_HOME,如果不添加,则当你使用 yarn 运行 mapreduce 时候会出现 UNKOWN RPC TYPE 的异常

export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce

在 hdfs 中创建 hive 数据仓库目录:

hive 的数据仓库在 hdfs 中默认为 /user/hive/warehouse,建议修改其访问权限为 1777,以便其他所有用户都可以创建、访问表,但不能删除不属于他的表。

每一个查询 hive 的用户都必须有一个 hdfs 的 home 目录( /user 目录下,如 root 用户的为 /user/root)
hive 所在节点的 /tmp 必须是 world-writable 权限的。

创建目录并设置权限:

# sudo -u hdfs hadoop fs -mkdir /user/hive# sudo -u hdfs hadoop fs -chown hive /user/hive# sudo -u hdfs hadoop fs -mkdir /user/hive/warehouse# sudo -u hdfs hadoop fs -chmod 1777 /user/hive/warehouse# sudo -u hdfs hadoop fs -chown hive /user/hive/warehouse

修改hive-env设置jdk环境变量 :

# vim /etc/hive/conf/hive-env.shexport JAVA_HOME=/opt/programs/jdk1.7.0_67

启动hive-server和metastore:

# service hive-metastore start# service hive-server2 start

4、测试

$ hive -e'create table t(id int);'$ hive -e'select * from t limit 2;'$ hive -e'select id from t;'

访问beeline:

$ beelinebeeline> !connect jdbc:hive2://localhost:10000;

5、与hbase集成

先安装 hive-hbase:

# yum install hive-hbase -y

如果你是使用的 cdh4,则需要在 hive shell 里执行以下命令添加 jar:

$ ADD JAR /usr/lib/hive/lib/zookeeper.jar;$ ADD JAR /usr/lib/hive/lib/hbase.jar;$ ADD JAR /usr/lib/hive/lib/hive-hbase-handler-<hive_version>.jar# guava 包的版本以实际版本为准。$ ADD JAR /usr/lib/hive/lib/guava-11.0.2.jar;

如果你是使用的 cdh5,则需要在 hive shell 里执行以下命令添加 jar:

ADD JAR /usr/lib/hive/lib/zookeeper.jar;ADD JAR /usr/lib/hive/lib/hive-hbase-handler.jar;ADD JAR /usr/lib/hbase/lib/guava-12.0.1.jar;ADD JAR /usr/lib/hbase/hbase-client.jar;ADD JAR /usr/lib/hbase/hbase-common.jar;ADD JAR /usr/lib/hbase/hbase-hadoop-compat.jar;ADD JAR /usr/lib/hbase/hbase-hadoop2-compat.jar;ADD JAR /usr/lib/hbase/hbase-protocol.jar;ADD JAR /usr/lib/hbase/hbase-server.jar;

以上你也可以在 hive-site.xml 中通过 hive.aux.jars.path 参数来配置,或者你也可以在 hive-env.sh 中通过 export HIVE_AUX_JARS_PATH= 来设置。

二、安装impala

与Hive类似,Impala也可以直接与HDFS和HBase库直接交互。只不过Hive和其它建立在MapReduce上的框架适合需要长时间运行的批处理任务。例如:那些批量提取,转化,加载(ETL)类型的Job,而Impala主要用于实时查询。

组件分配如下:

172.16.57.74 bd-ops-test-74 impala-state-store impala-catalog impala-server 172.16.57.75 bd-ops-test-75 impala-server172.16.57.76 bd-ops-test-76 impala-server172.16.57.77 bd-ops-test-77 impala-server

1、安装

在74节点安装:

yum install impala-state-store impala-catalog impala-server -y

在75、76、77节点上安装:

yum install impala-server -y

2、配置

2.1修改配置文件

查看安装路径:

# find / -name impala/var/run/impala/var/lib/alternatives/impala/var/log/impala/usr/lib/impala/etc/alternatives/impala/etc/default/impala/etc/impala/etc/default/impala

impalad的配置文件路径由环境变量IMPALA_CONF_DIR指定,默认为/usr/lib/impala/conf,impala 的默认配置在/etc/default/impala,修改该文件中的 IMPALA_CATALOG_SERVICE_HOST 和 IMPALA_STATE_STORE_HOST

IMPALA_CATALOG_SERVICE_HOST=bd-ops-test-74IMPALA_STATE_STORE_HOST=bd-ops-test-74IMPALA_STATE_STORE_PORT=24000IMPALA_BACKEND_PORT=22000IMPALA_LOG_DIR=/var/log/impalaIMPALA_CATALOG_ARGS=" -log_dir=${IMPALA_LOG_DIR} -sentry_config=/etc/impala/conf/sentry-site.xml"IMPALA_STATE_STORE_ARGS=" -log_dir=${IMPALA_LOG_DIR} -state_store_port=${IMPALA_STATE_STORE_PORT}"IMPALA_SERVER_ARGS=" \-log_dir=${IMPALA_LOG_DIR} \-use_local_tz_for_unix_timestamp_conversions=true \-convert_legacy_hive_parquet_utc_timestamps=true \-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} \-server_name=server1\-sentry_config=/etc/impala/conf/sentry-site.xml"ENABLE_CORE_DUMPS=false# LIBHDFS_OPTS=-Djava.library.path=/usr/lib/impala/lib# MYSQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar# IMPALA_BIN=/usr/lib/impala/sbin# IMPALA_HOME=/usr/lib/impala# HIVE_HOME=/usr/lib/hive# HBASE_HOME=/usr/lib/hbase# IMPALA_CONF_DIR=/etc/impala/conf# HADOOP_CONF_DIR=/etc/impala/conf# HIVE_CONF_DIR=/etc/impala/conf# HBASE_CONF_DIR=/etc/impala/conf

设置 impala 可以使用的最大内存:在上面的 IMPALA_SERVER_ARGS 参数值后面添加 -mem_limit=70% 即可。

如果需要设置 impala 中每一个队列的最大请求数,需要在上面的 IMPALA_SERVER_ARGS 参数值后面添加 -default_pool_max_requests=-1 ,该参数设置每一个队列的最大请求数,如果为-1,则表示不做限制。

在节点74上创建hive-site.xml、core-site.xml、hdfs-site.xml的软链接至/etc/impala/conf目录并作下面修改在hdfs-site.xml文件中添加如下内容:

<property><name>dfs.client.read.shortcircuit</name><value>true</value></property><property><name>dfs.domain.socket.path</name><value>/var/run/hadoop-hdfs/dn._PORT</value></property><property><name>dfs.datanode.hdfs-blocks-metadata.enabled</name><value>true</value></property>

同步以上文件到其他节点。

2.2创建socket path

在每个节点上创建/var/run/hadoop-hdfs:

# mkdir -p /var/run/hadoop-hdfs

2.3用户要求

impala 安装过程中会创建名为 impala 的用户和组,不要删除该用户和组。

如果想要 impala 和 YARN 和 Llama 合作,需要把 impala 用户加入 hdfs 组。

impala 在执行 DROP TABLE 操作时,需要把文件移到到 hdfs 的回收站,所以你需要创建一个 hdfs 的目录 /user/impala,并将其设置为impala 用户可写。同样的,impala 需要读取 hive 数据仓库下的数据,故需要把 impala 用户加入 hive 组。

impala 不能以 root 用户运行,因为 root 用户不允许直接读。

创建 impala 用户家目录并设置权限:

sudo -u hdfs hadoop fs -mkdir /user/impalasudo -u hdfs hadoop fs -chown impala /user/impala

查看 impala 用户所属的组:

# groups impalaimpala : impala hadoop hdfs hive

由上可知,impala 用户是属于 imapal、hadoop、hdfs、hive 用户组的 。

2.4启动服务

在 74节点启动:

# service impala-state-store start# service impala-catalog start

2.5使用impala-shell

使用impala-shell启动Impala Shell,连接 74,并刷新元数据

#impala-shell Starting Impala Shell without Kerberos authenticationConnected to bd-dev-hadoop-70:21000Server version: impalad version 2.3.0-cdh5.5.1 RELEASE (build 73bf5bc5afbb47aa7eab06cfbf6023ba8cb74f3c)***********************************************************************************Welcome to the Impala shell. Copyright (c) 2015 Cloudera, Inc. All rights reserved.(Impala Shell v2.3.0-cdh5.5.1 (73bf5bc) built on Wed Dec 2 10:39:33 PST 2015)After running a query, type SUMMARY to see a summary of where time was spent.***********************************************************************************[bd-dev-hadoop-70:21000] > invalidate metadata;

当在 Hive 中创建表之后,第一次启动 impala-shell 时,请先执行 INVALIDATE METADATA 语句以便 Impala 识别出新创建的表(在 Impala 1.2 及以上版本,你只需要在一个节点上运行 INVALIDATE METADATA ,而不是在所有的 Impala 节点上运行)。

你也可以添加一些其他参数,查看有哪些参数:

#impala-shell -hUsage: impala_shell.py [options]Options:-h, --help show this help message and exit-i IMPALAD, --impalad=IMPALAD<host:port> of impalad to connect to[default: bd-dev-hadoop-70:21000]-q QUERY, --query=QUERYExecute a query without the shell [default: none]-f QUERY_FILE, --query_file=QUERY_FILEExecute the queries in the query file, delimited by ;[default: none]-k, --kerberos Connect to a kerberized impalad [default: False]-o OUTPUT_FILE, --output_file=OUTPUT_FILEIf set, query results are written to the given file.Results from multiple semicolon-terminated querieswill be appended to the same file [default: none]-B, --delimited Output rows in delimited mode [default: False]--print_header Print column names in delimited mode when pretty-printed. [default: False]--output_delimiter=OUTPUT_DELIMITERField delimiter to use for output in delimited mode[default: \t]-s KERBEROS_SERVICE_NAME, --kerberos_service_name=KERBEROS_SERVICE_NAMEService name of a kerberized impalad [default: impala]-V, --verbose Verbose output [default: True]-p, --show_profiles Always display query profiles after execution[default: False]--quiet Disable verbose output [default: False]-v, --version Print version information [default: False]-c, --ignore_query_failureContinue on query failure [default: False]-r, --refresh_after_connectRefresh Impala catalog after connecting[default: False]-d DEFAULT_DB, --database=DEFAULT_DBIssues a use database command on startup[default: none]-l, --ldap Use LDAP to authenticate with Impala. Impala must beconfigured to allow LDAP authentication.[default: False]-u USER, --user=USER User to authenticate with. [default: root]--ssl Connect to Impala via SSL-secured connection[default: False]--ca_cert=CA_CERT Full path to certificate file used to authenticateImpala's SSL certificate. May either be a copy ofImpala's certificate (for self-signed certs) or thecertificate of a trusted third-party CA. If not set,but SSL is enabled, the shell will NOT verify Impala'sserver certificate [default: none]--config_file=CONFIG_FILESpecify the configuration file to load options. Filemust have case-sensitive '[impala]' header. Specifyingthis option within a config file will have no effect.Only specify this as a option in the commandline.[default: /root/.impalarc]--live_summary Print a query summary every 1s while the query isrunning. [default: False]--live_progress Print a query progress every 1s while the query isrunning. [default: False]--auth_creds_ok_in_clearIf set, LDAP authentication may be used with aninsecure connection to Impala. WARNING: Authenticationcredentials will therefore be sent unencrypted, andmay be vulnerable to attack. [default: none]

使用 impala 导出数据:

impala-shell -i '172.16.57.74:21000' -r -q "select * from test" -B --output_delimiter="\t" -o result.txt

以上所述是小编给大家介绍的yum安装CDH5.5 hive、impala的过程详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!


  • 上一条:
    虚拟化和云计算的区别分析
    下一条:
    VMware Workstation如何创建加密虚拟机
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 2024.07.09日OpenAI将终止对中国等国家和地区API服务(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2017-09
    • 2018-01
    • 2018-07
    • 2018-08
    • 2018-09
    • 2018-12
    • 2019-01
    • 2019-02
    • 2019-03
    • 2019-04
    • 2019-05
    • 2019-06
    • 2019-07
    • 2019-08
    • 2019-09
    • 2019-10
    • 2019-11
    • 2019-12
    • 2020-01
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-12
    • 2024-02
    • 2024-04
    • 2024-05
    • 2024-06
    • 2025-02
    • 2025-07
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客