当前位置: 首页 > news >正文

hive+hadoop架构数仓使用问题记录

使用问题记录

问题1:5条数据的表执行count(*)函数,很慢,43s才出结果?

该数仓的分析计算是基于hadoop的mapreduce分布式计算框架运行的,适用于大量/海量数据,少量数据,还是使用单体数据库快。也就是说只有在海量/大量数据场景下,数仓的分析计算才能发挥优势。

问题2:执行 select count(*) 报错,执行select * 正常?

报错如下:

[2024-11-28 10:59:28] [08S01][1] Error while compiling statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. Your endpoint configuration is wrong; For more details see: http://wiki.apache.org/hadoop/UnsetHostnameOrPort

日志看不出问题,再查看hadoop yarn resouce节点的日志

tail -300f /home/xxx/hadoop-3.2.2/logs/hadoop-hadoop-resourcemanager-yd-ss.log

在这里插入图片描述

提示问题Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster

按照日志提示,及搜索各大技术博客,要么是按日志提示在mapred-site.xml加配置,要么是在yarn-site.xml 文件修改yarn.application.classpath配置,但是自己按提示改完后,均无法解决问题。为此问题苦苦搜索3天,一直无果。

找了hadoop相关视频,准备系统学习下,在实验hadoop的share自带的例子时,发现有如下警告:

2024-12-02 10:54:09,013 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

之前问题是找不到MRAppMaster,这里警告也跟库有关,会不会是因为这个库的问题,于是着手解决这个库的问题,

修改hadoop-env.sh,增加如下配置:

 export HADOOP_HOME=/home/xxx/hadoop-3.2.2export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"

解决后重启hadoop服务,再次执行select count(*) from t_user,惊喜的发现竟然成功了。

经过再次复现尝试,mapred-site.xml和yarn-site.xml 文件要配置,hadoop-env.sh文件也要配置,然后依次重启hdfs 和 hive相关服务,即可生效。若只重启hdfs,可能会不生效。

至于为啥select * from t_user 不报错,是因为其只是查询底层数据文件,不存在分析计算,所以未使用mapreduce服务,而select count(*) 需要使用mr进行计算。

问题3:mapreduce 是随着哪个服务启动的?

mapreduce是hadoop下的分布式计算框架,随着yarn服务启动而启动。

问题4:hadoop集群部署时,hdfs和yarn的区别?

hadoop体系在集群部署时,需要部署两个集群,一个是hdfs集群,一个是yarn集群

问题5:hive创建的表,使用desc formatted查询的表信息的注释字段乱码?

编码问题,执行以下脚本即可解决:

ALTER TABLE hive.columns_v2 MODIFY COLUMN COMMENT varchar(4000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL;
ALTER TABLE hive.table_params MODIFY COLUMN PARAM_VALUE mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL;
ALTER TABLE hive.partition_params MODIFY COLUMN PARAM_VALUE mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL;
ALTER TABLE hive.partition_keys MODIFY COLUMN PKEY_COMMENT varchar(4000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL;

但是这种修改脚本对已经建的表是不生效的,需要把表删除重建才生效。除非在修改字段编码方式时,同时将数据编码方式也修改一下。

问题6:修改完hive-site.xml文件,重新启动hive服务报如下错误:

在这里插入图片描述

大概率是配置文件的编码格式问题导致的,只需要将配置文件使用notepad+转换下编码格式再更新即可。

注意事项

1 关于hadoop,在遇到涉及环境变量配置的问题时,可以尝试将其环境变量配置到hadoop下的hadoop-env文件中

http://www.lryc.cn/news/502291.html

相关文章:

  • 前端的 Python 入门指南(三):数据类型对比 - 彻底的一切皆对象实现和包装对象异同
  • Axios结合Typescript 二次封装完整详细场景使用案例
  • 基于Kubesphere实现微服务的CI/CD——部署微服务项目(三)
  • 【使用webrtc-streamer解析rtsp视频流】
  • element左侧导航栏
  • 【金融贷后】贷后运营精细化管理
  • 学习CSS第七天
  • Image Stitching using OpenCV
  • CentOS7 安装Selenium(使用webdriver_manager自动安装ChromeDriver)
  • 鸿蒙手机文件目录
  • 泷羽Sec学习笔记-Bp中ip伪造、爬虫审计
  • 电子电工一课一得
  • Cesium 限制相机倾斜角(pitch)滑动范围
  • 配置ssh-key连接github
  • Linux——进程控制模拟shell
  • 【HarmonyOS】鸿蒙应用实现手机摇一摇功能
  • Kael‘thas Sunstrider Ashes of Al‘ar
  • CNCF云原生生态版图
  • 渐冻症:真的无药可治?
  • `pg_wal` 目录
  • 【信息系统项目管理师】论文:论信息系统项目的整合管理
  • MATLAB深度学习(七)——ResNet残差网络
  • freeswitch(配置event_socket连接)
  • C++ SQLite轻量化数据库使用总结
  • docker打包当前使用的某个容器为镜像,导出,导入
  • 【刷题22】BFS解决最短路问题
  • 服务器重启:数字世界的短暂休憩与新生
  • JavaEE 【知识改变命运】05 多线程(4)
  • 【CSS in Depth 2 精译_076】12.4 @font-face 的工作原理
  • SQL Having用法