文章回顾

理论

大数据框架原理简介

大数据发展历程及技术选型

实践

搭建大数据运行环境之一

搭建大数据运行环境之二

本地MAC环境配置

CPU数和内存大小

  • 查看CPU数
sysctl machdep.cpu

# 核数为4machdep.cpu.core_count: 4    # cpu数量为8个,使用了超线程技术:四核八线程machdep.cpu.thread_count: 8  
  • 内存大小
top -l 1 | head -n 10 | grep PhysMem

PhysMem: 16G used (10G wired), 67M unused.

在本地开了3个虚拟机centos服务器

虚拟机服务器配置

服务器1 192.168.84.128 4核4G服务器2 192.168.84.131 1核2G服务器3 192.168.84.132 1核2G

因为服务器1上的按照的软件比较多 所以这样分配核数和内存 可以将大数据环境运行起来

虚拟机软件给一个虚拟机分配核数和内存的方式


通过Sqoop查看Mysql数据库

/usr/local/sqoop/bin/sqoop list-databases --connect jdbc:mysql://hadoop001:3306/?useSSL=false --username root --password 123456

在Hive中创建测试表

创建test表

CREATE TABLE IF NOT EXISTS test (id int,uid int,title string,name string,status int,time timestamp)COMMENT '简介'ROW FORMAT DELIMITEDFIELDS TERMINATED BY "\001"LINES TERMINATED BY "\n"STORED AS TEXTFILE;

创建test_out表

CREATE TABLE IF NOT EXISTS test_out (name string, count int,time date)COMMENT '简介'ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\001'LINES TERMINATED BY '\n'STORED AS TEXTFILE;

hive删除表

  • 使用truncate仅可删除内部表数据,不可删除表结构
truncate table 表名(truncate可删除所有的行,但是不能删除外部表)
  • 使用shell命令删除外部表
hdfs -dfs -rm -r 外部表路径
  • 使用 drop 可删除整个表
drop table 表名

查看hive表

  • 查询hive所有表
hive -e "show databases ;" > databases.txt

cat databases.txtdefault
  • 指定default数据库
./hive -d default

在Mysql中创建测试表

  • 创建test
DROP TABLE IF EXISTS `test`;CREATE TABLE `test` (  `id` int(10) DEFAULT NULL,  `uid` int(10) DEFAULT NULL,  `title` varchar(100) DEFAULT NULL,  `name` varchar(100) DEFAULT NULL,  `status` int(10) DEFAULT NULL,  `time` timestamp NULL DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入3条测试数据

INSERT INTO `test`.`test`(`id`, `uid`, `title`, `name`, `status`, `time`) VALUES (1, 1, '第一条数据', '平凡人笔记', 1, '2021-01-11 16:30:02');

INSERT INTO `test`.`test`(`id`, `uid`, `title`, `name`, `status`, `time`) VALUES (2, 2, '第二条数据', '孟凡霄', 2, '2021-01-11 16:30:20');

INSERT INTO `test`.`test`(`id`, `uid`, `title`, `name`, `status`, `time`) VALUES (3, 3, '第三条数据', '平凡人', 3, '2021-01-11 16:30:41');
  • 创建test_out
DROP TABLE IF EXISTS `test_out`;CREATE TABLE `test_out` (  `name` varchar(100) DEFAULT NULL,  `count` int(10) DEFAULT NULL,  `time` date DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Mysql导入Hive

/usr/local/sqoop/bin/sqoop import \--driver com.mysql.jdbc.Driver \--connect jdbc:mysql://hadoop001:3306/test?useSSL=false \--username root \--password 123456 \--table test \--fields-terminated-by '\001' \--lines-terminated-by '\n' \--delete-target-dir \--num-mappers 1 \--hive-import \--hive-database default \--hive-table test \--direct

虽然有报错 

ERROR bonecp.BoneCP: Unable to start/stop JMXjava.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

但不影响导入结果

  • 查看hive表

说明从Mysql导入hive成功

增量数据定时导入

mysql test表增加一条测试数据

INSERT INTO `test`.`test`(`id`, `uid`, `title`, `name`, `status`, `time`) VALUES (4, 4, '第四条数据', '笔记', 4, '2021-01-11 16:50:00');
  • 删除指定job
/usr/local/sqoop/bin/sqoop job --delete testJob
  • 添加一个增量更新的job
/usr/local/sqoop/bin/sqoop job --create testJob -- \import \--driver com.mysql.jdbc.Driver \--connect jdbc:mysql://hadoop001:3306/test?useSSL=false \--username root \--password 123456 \--table test \--check-column time \--incremental lastmodified \--last-value '2018-08-09 15:30:29' \--merge-key id \--fields-terminated-by '\001' \--lines-terminated-by '\n' \--num-mappers 1 \--target-dir /user/hive/warehouse/test
  • 执行job
/usr/local/sqoop/bin/sqoop job --exec testJob
  • 查看数据已被更新

  • 查看job
/usr/local/sqoop/bin/sqoop job --show testJob

通常情况可以结合sqoop job和crontab等任务调度工具实现相关业务

Hive导入Hive

cd /usr/local/hive/bin

hive

# 统计后将结果数据加入另一个表INSERT INTO TABLE test_out(name,count,time) SELECT name,count(1),to_date(time) FROM test GROUP BY name,to_date(time);

# 或者

INSERT OVERWRITE TABLE test_outSELECT name,count(1),to_date(time) FROM test GROUP BY name,to_date(time);

查看统计结果


统计成功

Hive导入Mysql

# hive的default库中的test_out表数据导出到mysql的test库test_out表

/usr/local/sqoop/bin/sqoop export \--connect "jdbc:mysql://hadoop001:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai" \--username root \--password 123456 \--input-null-string '\\N' \--input-null-non-string '\\N' \--input-fields-terminated-by '\t' \--table test_out \--hcatalog-database default \--hcatalog-table test_out \-m 1;


导出成功

可能遇到的问题及注意点

  • hive访问mysql数据库权限问题
服务器1上hive访问mysql如果报错

Access denied for user 'root'@'192.168.84.128' (using password: YES)

mysql需要授权访问者

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.84.128' IDENTIFIED BY '123456' WITH GRANT OPTION;

flush privileges;

  • 在namenode上执行
报错:

RemoteException(org.apache.hadoop.ipc.StandbyException):Operation category READ is not supported in state standby

原因:

服务器1是namenode节点 active 状态服务器2是secondNamenode节点是 standby状态

执行命令要在active的namenode才可以
  • 只有namenode才会有webui 50070端口
服务器1(192.168.84.128)上安装namenode 有50070端口服务器2(192.168.84.131)上安装secondNamenode 有50070端口服务器3(192.168.84.132)上没有安装namenode 没有


后记

接下来研究的方向:

1、hive运行原理2、弄一笔数据走一下搭建好的大数据运行环境3、10亿数据如何分库分表存储Mysql4、10亿数据同步到hive5、flink数据如何求交

Mysql和Hive之间通过Sqoop进行数据同步相关推荐

  1. 执行sqoop 用shell_Mysql和Hive之间通过Sqoop进行数据同步

    文章回顾 理论 大数据框架原理简介 大数据发展历程及技术选型 实践 搭建大数据运行环境之一 搭建大数据运行环境之二 本地MAC环境配置 CPU数和内存大小 查看CPU数 sysctl machdep. ...

  2. sqoop动态分区导入mysql,使用sqoop import从mysql往hive含分区表中导入数据的一些注意事项...

    先看下面这条语句,它实现的功能是将特定日期的数据从mysql表中直接导入hive $ sqoop import \ --connect jdbc:mysql://192.168.xx.xx:3306/ ...

  3. sqoop import 数据同步到hive的用法

    1.sqoop 的通用参数 2.import 的参数 3.第一个同步案例:简单同步 sqoop import --connect jdbc:oracle:thin:@ip:1521/服务名 --use ...

  4. mysql数据库版本不同_MySQL不同版本数据同步

    1.环境准备: 系统环境:CentOS Linux release 7.7.1908 (Core) MySQL环境: 172.16.6.140: Ver 5.0.96-community-log fo ...

  5. mysql sync es 异步双写_mysql数据同步es方案思考

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 大体计划 1.双写 矫捷长处:简略. 错误谬误: a.停业代码耦合严重. b.如何保证双写成功 c.同步双写会增加响 ...

  6. mysql hdfs_MySQL数据库与HDFS的实时数据同步

    [IT168 技术]通过Map/Reduce进行批处理递送到Apache Hadoop仍然是中枢环节.,但随着要从"超思维速度"分析方面获取竞争优势的压力递增,因此Hadoop(分 ...

  7. MySQL主主(双主)数据同步

    1. 两台mysql都可以读写,互为主备,默认只是用一台(masterA)负责数据的写入,另一台(masterB)备用: 2. masterA是masterB的主库,masterB又是masterA的 ...

  8. mysql 替换重复数据库,mysql关联修改,批量修改,数据同步

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 业务场景: 1.从接口获取数据,根据本地表数据处理接口数据 2.将处理好的数据更新到指定表中 思路: 1.建立临时表 ...

  9. oracle和redis关联查询,redis与oracle之间如何可以实现数据同步

    redis与oracle之间不能进行直接同步,关键还是看你的架构设计是否合适: 1,插入时同步,例如先更新了oracle,再对redis进行更新,这些需要通过代码逻辑实现.设计决定先后顺序. 2,查询 ...

最新文章

  1. mysql 绑定参数_MySQL 使用 Perl 绑定参数和列
  2. Vim YouCompleteMe 安装配置
  3. pat德才论(java)
  4. android 时间管理app,时间管理app
  5. POJ2528 线段树+离散化+hash(成段更新)
  6. SSM-SpringMVC-07:SpringMVC中处理器映射器
  7. 远程Linux主机安装zsh插件zsh-syntax-highlighting
  8. Makefile文件试错
  9. 40年技术发展变革,物联网行业的趋势、现状与挑战
  10. Java step by step(3): Annotation
  11. 【小记录】关于dojo中的on事件
  12. python网络监控程序_Python之利用psutil写一个命令行网速实时监控小程序
  13. 建议把英语改成选修的计算机老师,中小学“变动”,英语改为副科?老师没意见家长却愁眉不展...
  14. 人生若如初见,又当如何?
  15. ES6 数组高频使用方法
  16. PPP认证原理和实验
  17. Adobe Illustrator (AI)安装教程 (附安装包下载资源)
  18. java beanutil 工具类_Apache Commons BeanUtils PropertyUtils工具类操作Java Bean属性
  19. 植物大战僵尸修改数据
  20. 跟随器为何要加反馈电阻?

热门文章

  1. 怎么用计算机看,如何巧妙的查看电脑使用痕迹
  2. python调用bat_python windows 远程执行bat
  3. Linux块层技术全面剖析-v0.1
  4. python开发之路目录
  5. 用免费WiFi 连接消费者,Zenreach 获 3000 万美元B轮融
  6. CSS cursor 和 opacity 属性
  7. mysql之TIMESTAMP(时间戳)用法详解
  8. HTTP电脑发送短信接口调用示例
  9. 3分钟快速presentation
  10. 推销自己的前端技术书籍