存档

‘Hadoop’ 分类的存档

利用sqoop从pg数据库导数据到hbase

2018年7月13日 没有评论

1 环境
源端:postgresql 9.6.6
目标端: CDH 5.14.2 内置的hbase

2 sqoop-list-tables 报 “Could not load db driver class: org.postgresql.Driver”
从报错上看是缺少jdbc的jar包,在os上做了一下find发现CDH已经内置了,配到环境变量上就可以了。
环境变量添加类似这样一条:

export HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH-5.14.2-1.cdh5.14.2.p0.3/jars/postgresql-9.1-901.jdbc4.jar:$HADOOP_CLASSPATH

测试:

 ./sqoop-list-tables --connect jdbc:postgresql://10.10.20.2:5432/qiuyb --username postgres -P
Warning: /opt/cloudera/parcels/CDH-5.14.2-1.cdh5.14.2.p0.3/bin/../lib/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
18/07/13 17:35:53 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6-cdh5.14.2
Enter password: 
18/07/13 17:35:56 INFO manager.SqlManager: Using default fetchSize of 1000
t1

qiuyb库下只有一张表名字为:t1

3 开通网络权限的时侯需要把hadoop整个集群连接pg都要开通,因为sqoop实际要做MR

4 数据从pg到hbase导入操作
1) sqoop import时在hbase中新建表,并插入数据

sqoop import -D sqoop.hbase.add.row.key=true --connect  jdbc:postgresql://10.10.20.2:5432/base --username postgres --password xxxxxx --table tt --columns id --hbase-create-table --hbase-table tt --column-family cf --hbase-row-key id 

2)带条件的插入新数据

sqoop import -D sqoop.hbase.add.row.key=true --connect  jdbc:postgresql://10.10.20.2:5432/base --username postgres --password xxxxxx --table tt --columns id  --hbase-table tt --column-family cf --hbase-row-key id --where "id > 1"
分类: Hadoop 标签: , ,

hadoop日常维护汇总

2017年7月26日 没有评论

1 清空回收站
默认情形下被删除数据会在24小时内系统自动清除,手动清除如下:

hdfs dfs -expunge --做检查点
hdfs dfs -rm -r /user/root/.Trash/201707261056 --把检查点后归集的目录删除

2 杀会话

./yarn application -kill application_1416899352676_0008

3 hive解锁

hive (dw_ods)> show locks community_new extended;
unlock table community_new;

4 利用SecondaryNameNode恢复NameNode
1)确保新的NameNode${dfs.name.dir}目录存在,并移除其内容
2)把SecondNameNode节点中fs.checkpoint.dir的所有内容复制到新的NameNode节点的
fs.checkpoint.dir的所有内容复制到新的NameNode节点的
{fs.checkpoint.dir}目录中。
3)在新NameNode上执行命令:
hadoop namenode -importCheckpoint
该步会从fs.checkpoint.dir中恢复
fs.checkpoint.dir中恢复
{dfs.name.dir},并启动NameNode
4)检查文件块完整性,执行命令:hadoop fsck /
5)停止NameNode
6)删除新NameNode ${fs.checkpoint.dir}目录下的文件
7)正式启动NameNode,恢复工作完成

5 hdfs坏块修复
1)列出坏块文件

hdfs fsck -list-corruptfileblocks

2)修复方法
方案一:hadoop会在6个小时候自动检测并修复

dfs.datanode.directoryscan.interval : 21600

方案二:手工重启hdfs服务后会自动修复
方案三:手工修复(推荐使用)

hdfs debug  recoverLease  -path /user/hive/warehouse/sdata.db/s002_lm_pm_shd/dt=20191019/000106_0.snappy -retries 10

若文件不重要

# 退出安全模式
hdfs dfsadmin -safemode leave
#删除损坏(丢失)的BLOCK
hdfs fsck  /path  -delete
分类: Hadoop 标签: ,

使用ogg同步数据给kafka

2017年4月12日 没有评论

为更好的配合公司自然人项目的实施,我利用虚机搭了一个测试环境,把生产库中的部分表的数据通过ogg软件同步给kafka
阅读全文…

分类: Hadoop, Oracle 标签: ,

hadoop源码导入eclipse

2015年3月20日 没有评论

1 生成Eclipse工程文件

$ cd hadoop-maven-plugins
$ mvn install
$ cd hadoop-2.5.2-src
$ mvn eclipse:eclipse -DskipTests

2 在Eclipse中导入源代码
“File” >> “Import” >> “Existing Projects into Workspace”,选择hadoop-2.5.2-src,然后确认。

3 错语修复
导入后遇到错误,共有59个错误,但总体上分为3类。解决方法如下:

错误1: org.apache.hadoop.ipc.protobuf. 无法解析
解决方法如下,依次执行下述命令:

$ cd hadoop-2.5.2-src/hadoop-common-project/hadoop-common/src/test/proto
$ protoc –java_out=../java *.proto

最后,刷新Eclipse中的所有工程。至此,只剩下 6 个错误。

错误2:AvroRecord cannot be resolved to a type TestAvroSerialization.java
解决方法如下:
首先,下载 avro-tools-1.7.7.jar(点击下载)。存放于 hadoop-2.5.0-src 目录中。
然后执行下述命令:

$ cd hadoop-2.5.2-src/hadoop-common-project/hadoop-common/src/test/avro
$ java -jar ~/hadoop-2.5.2-src/avro-tools-1.7.7.jar compile schema avroRecord.avsc ../java

最后,刷新Eclipse工程。只剩下 3个错误。

错误3: Project ‘hadoop-streaming’ is missing required source … Build Path Problem
解决方法如下:
右键 hadoop-streaming 项目->properties->左边Java Build Path->Source->选定错误项->右边Remove。

至此,在Eclipse中创建Hadoop工程完成。

分类: Hadoop 标签: , ,

hadoop源码编译

2015年3月18日 没有评论

一 动因
使用网站编译好的版本,执行每个命令都会报如下一条警告

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

baidu了一下,有人这样说:Apache提供的hadoop本地库是32位的,而在64位的服务器上就会有问题,因此需要自己编译64位的版本。
还有一个原因是,对于开源软件本地化是必然的,所以要把编译这路走通,这样就可以放心的修改源代码了。
阅读全文…

分类: Hadoop 标签: , ,

hadoop2.5.2分布式环境安装配置

2015年3月18日 没有评论

我目前还处于hadoop的入门阶段,个人认为hadoop这样的分布式计算、分布式存储技术前景很广阔,所以准备花些精力好好学学。入门当然从安装开始。我在环境是一台IBM X3650的X86服务器,RHEL 5.6_x64,在其上装的virtualbox,通过virtualbox虚出了4台机器。

一、环境准备
OS:OEL 6.6_x64
hadoop版本:hadoop-2.5.2,http://hadoop.apache.org/网站下载的。
jdk版本:jdk-6u31-linux-x64.bin
阅读全文…

分类: Hadoop 标签: , , , ,