欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

impala架构零差错安装攻略

程序员文章站 2022-07-10 23:30:44
...

Apache Impala


  • impala 介绍
    • 基于hive的数仓工具 提供了准实时的交互式sql查询分析能力 和hive共用一套元数据存储
    • hive是基于hadoop的数仓工具 提供了sql分析数据的能力 批处理数据分析工具
    • 是企业中 imapla通常配合hive一起进行数仓数据分析
    • 来自于cloudera 后来贡献给了apache
  • impala和hive的关系
    和hive共用一套元数据的存储
  • impala和hive的区别
    • 执行机制
      hive: hive sql–>mr—>yarn—>hdfs
      最大的弊端在于mr执行中资源申请消耗数据之间的shuffle。尤其涉及多个mr程序串联 影响会放大

      impala:impala sql-->执行计划数-->hdfs
      
    • 语言层面
      hive:java 依赖于jvm 涉及启动销毁 属于偏上层语言。
      impala: C++ 偏向于底层语言 可以更好的调用系统资源

    • 数据流
      hive :推的方式 前述节点计算完毕数据退给后续节点计算
      impala:拉的方式 不断调用获取前述节点的计算结果 边拉边计算

    • 内存
      hive优先使用内存 如果不足 使用外存(磁盘)
      impala当下只用内存 内存不足报错 通常去配合hive使用。

    • 调度
      hive 资源调度是用yarn完成
      impala 自己调度 策略极其简单

    • 容错
      hive容错准备来说就是hadoop容错机制 task重试机制 推测执行机制
      impala没有容错能力 设计的时候认为 错了再来也会很快 再执行的成本低

    • 适用层面
      hive适用于复杂的批处理任务分析
      impala适用于交互式实时任务处理 通常要hive使用


impala安装

  • 安装方式

    • 只有cloudera提供了impala的rpm包 且安装rpm包之间会有依赖问题 所有通常是去下载cloudera所有rpm包制作本地yum源 使用yum方式安装
      cdh5.14.0-centos6.tar.gz
  • 配置本地yum源

    • 上传cdh5.14.0-centos6.tar.gz 到一台服务器 要求磁盘够大
      在待上传的机器crt窗口中 按下 alt+p 打开sftp 会话窗口
      使用put e://xxxxx.tar.gz

    • 解压安装包到可以放的下的路径

    • 安装httpd服务器 对外提供yum访问
      yum -y install httpd
      service httpd start
      chkconfig httpd on

    • 创建软链接
      ln -s /cloudera_data/cdh/5.14.0 /var/www/html/cdh5.14.0
      ln -s 真实文件夹路径 虚拟的路径

    • 修改本地yum源配置
      cd /etc/yum.repos.d
      vim localimp.repo

      [localimp]
      name=localimp
      baseurl=http://node-1/cdh5.14.0/
      gpgcheck=0
      enabled=1
      
    • 永久确保 linux 的 Selinux 关闭
      vim /etc/sysconfig/selinux
      SELINUX=enforcing 改为 SELINUX=disabled
      重启服务 reboot

    • 把本地yum源的配置文件复制其他的机器上

    • yum在线安装的impala

      • node-1
        yum install -y impala impala-server impala-state-store impala-catalog impala-shell

      • node-2 node-n
        yum install -y impala-server

      • 安装之后检查yum安装日志 确保impala相关rpm成功安装

      • Q:服务的缺失
        Installed:
        impala.x86_64 0:2.11.0+cdh5.14.0+0-1.cdh5.14.0.p0.50.el6
        impala-server.x86_64 0:2.11.0+cdh5.14.0+0-1.cdh5.14.0.p0.50.el6
        impala-shell.x86_64 0:2.11.0+cdh5.14.0+0-1.cdh5.14.0.p0.50.el6

        Dependency Installed:
        

        现象:
        缺少 impala-state-store impala-catalog
        原因之前的卸载不干净对于当前的影响

        解决:
        首先卸载干净
        rpm -qa |grep impala-state-store
        impala-state-store-2.11.0+cdh5.14.0+0-1.cdh5.14.0.p0.50.el6.x86_64

        rpm -e impala-state-store-2.11.0+cdh5.14.0+0-1.cdh5.14.0.p0.50.el6.x86_64 --nodeps  卸载不掉??????
        原因:之前卸载的时候提前把rpm包的目录给卸载了
        
        如果在删除包之前删除了包的目录???
        
        rpm -e  impala-state-store-2.11.0+cdh5.14.0+0-1.cdh5.14.0.p0.50.el6.x86_64 --noscripts
        
        最后重新安装:
        yum install impala-state-store 
        
        impala-catalog 的修复如上。
        
  • 修改hadoop hive配置

    • hive 确保hive metastore服务是单独配置 单独启动的
      conf/hive-site.xml

      hive.metastore.uris
      thrift://node-1:9083

    • 把hive的安装包复制给其他机器
      scp -r /export/servers/hive/ node-2:/export/servers/
      scp -r /export/servers/hive/ node-n:/export/servers/

  • 修改hadoop配置

    • 创建一个文件夹 用于本地读取数据的交换
      mkdir -p /var/run/hdfs-sockets

    • 修改配置文件开启本地读取数据的能力
      hdfs-site.xml

      dfs.client.read.shortcircuit
      true


      dfs.domain.socket.path
      /var/run/hdfs-sockets/dn


      dfs.client.file-block-storage-
      locations.timeout.millis
      10000


      dfs.datanode.hdfs-blocks-
      metadata.enabled
      true

    • 把该配置文件复制给其他的机器
      cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/

      scp -r hdfs-site.xml node-2:$PWD
      scp -r hdfs-site.xml node-n:$PWD
      
    • 启动hadoop 再启动hive
      确保Safemode is off.
      启动hive
      只需要启动metastore服务
      nohup /export/servers/hive/bin/hive --service metastore &

  • 修改impala配置

    • 修改impala默认配置
      所有节点更改 impala 默认配置文件
      vim /etc/default/impala
      IMPALA_CATALOG_SERVICE_HOST=node-1
      IMPALA_STATE_STORE_HOST=node-1

    • 添加mysql驱动
      使用软链接 把机器上任何一个mysql驱动链接到impala指定的路径下
      ln -s /export/servers/hive/lib/mysql-connector-java-5.1.32.jar /usr/share/java/mysql-connector-java.jar

    • 修改bigtop
      修改 bigtop 的 java_home 路径(n 台机器)
      vim /etc/default/bigtop-utils
      export JAVA_HOME=/export/servers/jdk1.8.0_65


  • 启动impala集群

    • impala-shell

    • 启动之后一定去查看各个机器上的进程是否正常
      ps -ef |grep impala

      • 如果进程不正常 首先去看日志 确定问题
        /var/log/impala

      • 如果日志中也没有报错信息 怀疑之前的卸载不干净造成的

      • 如果卸载重新安装也无法解决 在配置impala的时候 能不能去加载到hadoop hive的配置
        把hadoop和hive的相关配置文件 加载到impala配置文件路径下
        cp -r /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/core-site.xml /etc/impala/conf/core-site.xml
        cp -r /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/hdfs-site.xml /etc/impala/conf/hdfs-site.xml
        cp -r /export/servers/hive/conf/hive-site.xml /etc/impala/conf/hive-site.xml

  • 最后一个大坑

    • impala在yum安装的时候 会默认把hadoop生态圈软件默认安装一遍
      且把脚本放置在/usr/bin 路径 权限最高 覆盖我们系统环境变量的配置
      • 解决: 删除该脚本即可 重新连接终端
        rm -rf /usr/bin/hadoop
        rm -rf /usr/bin/hive
        rm -rf /usr/bin/hbase

      • 最好 把impala服务重新启动 保证服务的干净


    impala使用注意事项

    • impala访问hive的时候 是以impala用户来访问的 涉及针对hdfs所有操作 可能都会遇到权限不足的问题
      比如去创建数据库 插入数据 等

      • 更改文件夹的权限
        hadoop fs -chmod -R 777 hdfs://node-1:9000/user/hive

      • 或者直接关闭hdfs权限检查
        hdfs-site.xml

    • impala的数据发生改变 hive可以实时看到改变 impala最终修改的就是hive的元数据。

    • hive的数据发生改变 impala并不能实时看到改变 需要自己手动刷新元数据

      • 针对单个表的增量刷新(表存在 数据增加)
        refresh dbname.tablename

      • 针对整个hive的元数据刷新(新增数据库 表)
        invalidate metadata

      • 造成以上原因的就是因为impala catalog

        • 只能单方向同步元数据 impala---->hive 反之不可以