跨版本迁移旧集群到新集群(hadoop2.2移到hadoop2.8),遇到无数问题,历时三周,终于圆满结束,总结如下:
一. 搭建新集群
新集群用了5台实体机,分别安装zookeeper、hadoop、hbase等。机器的ip尾号分别是16、17、18、19、20,所以下面的文字,用这几个数字代表这几台机器。参考帖子如下,建议下面两个链接的帖子都看完,再开始动手搭建自己的集群环境:
下载安装包,配置集群机器互相免密登录,zookeeper、hadoop、hbase启动前的配置,此帖子不错:https://blog.csdn.net/qazwsxpcm/article/details/78937820
查看启动顺序配置,此帖子不错:https://blog.csdn.net/u011414200/article/details/50437356#%E4%B8%89-%E5%BC%80%E5%90%AF%E4%B8%8E%E5%85%B3%E9%97%AD%E9%9B%86%E7%BE%A4%E9%A1%BA%E5%BA%8F
过程中遇到各种问题,所以把集群停止启动多次,总结 用到的命令如下:
(1)清场工作(如果初次安装,则不用这些命令)
step1:16-20所有机器,执行 ps -ef|grep java , 查看所有java进程,就可以看到所有集群相关的进程,比如zookeeper、hadoop、hbase之类的进程,执行 kill -9 xxx xxx 杀掉这些进程,这里的xxx是进程号。如果是按照以下步骤(2)中的启动方式启动的,那么在16这个master机器上,执行以下三条命令,能快速杀掉一批集群进程,提高杀进程的效率:
/data/hadoop/app/hbase-1.2.6/bin/stop-hbase.sh /data/hadoop/app/hadoop-2.8.2/sbin/stop-yarn.sh /data/hadoop/app/hadoop-2.8.2/sbin/stop-dfs.sh
step2:16-20所有机器 cd /data/hadoop/app/hadoop-2.8.2/hdfs rm -rf * (2)启动工作
step1: 16-20所有机器上,启动zookeeper,也就是5个机器上都执行:/data/hadoop/app/zookeeper-3.4.10/bin/zkServer.sh start
step2: 16-20所有机器上,启动journalnode,也就是5个机器上都执行: /data/hadoop/app/hadoop-2.8.2/sbin/hadoop-daemon.sh start journalnode
step3: 16机器上(因为想选16机器为namenode的master机器),执行 /data/hadoop/app/hadoop-2.8.2/bin/hdfs namenode -format
step4: 16机器上,继续执行 /data/hadoop/app/hadoop-2.8.2/bin/hdfs zkfc -formatZK
step5:16机器上,执行 /data/hadoop/app/hadoop-2.8.2/sbin/start-dfs.sh, 这条命令执行的时候,你必须 已经参考上面的参考链接里的内容,把hadoop里的core-site.xml、 hdfs-site.xml、yarn-site.xml、 slaves 等文件,以及hbase/conf 下面的backup-masters文件(没有的话需要自己touch一下新建)、regionservers、hbase-site.xml等文件 都配置好了,
step6:想把17机器当成16机器的备机,17机器上执行:
/data/hadoop/app/hadoop-2.8.2/bin/hdfs namenode -bootstrapStandby /data/hadoop/app/hadoop-2.8.2/sbin/hadoop-daemon.sh start namenode step7:16机器上,检查安装工作。执行下面两个命令, 一个命令的结果应该是active,另外一个命令的应该是standby,否则两个namenode应该安装的有问题。
/data/hadoop/app/hadoop-2.8.2/bin/hdfs haadmin -getServiceState nn1 /data/hadoop/app/hadoop-2.8.2/bin/hdfs haadmin -getServiceState nn2 step8: 16机器上,执行/data/hadoop/app/hadoop-2.8.2/sbin/start-yarn.sh ,也就是所有机器上启动了nodeManager,而且16机器上还启动了resourcemanager
step9: 17机器上,执行/data/hadoop/app/hadoop-2.8.2/sbin/yarn-daemon.sh start resourcemanager
step10: 16-17机器上,分别执行/data/hadoop/app/hadoop-2.8.2/sbin/mr-jobhistory-daemon.sh start historyserver ,这样就可以查看日志了,比如distcp命令的执行是否成功等,浏览器输入http://10.xx.xx.16:19888/jobhistory ,即可查看 step11: 16机器上,执行/data/hadoop/app/hbase-1.2.6/bin/start-hbase.sh 启动了所有的hmaster和hregionserver
(3)检查工作: step1: 16-20所有机器上,输入 jps 命令,查看启动了的进程,是否齐全。
step2: 16-20所有机器上,输入 hadoop checknative -a 命令,检查hadoop是否安装好,如果命令执行的结果,是所有配置都是空,那么就有问题。先 执行 cp /hadoop的目录/hadoop-2.8.2/lib/native/* /hadoop的目录/hadoop-2.8.2/lib/ , 然后再在 /etc/profile 文件里面添加一句 打印日志的配置:
export HADOOP_ROOT_LOGGER=DEBUG,console ,修改完profile文件后,保存,然后再次执行hadoop checknative -a 命令,发现提示信息 这个版本的hadoop 需要这个glibc 2.14版本及以上,那么开始安装glibc 2.14,不过安装方式得注意,不能安装glibc的tar.gz 这个包,要安装rpm包,否则会导致linux机器内核挂掉,机器崩溃,或者reboot了,glibc又回滚到之前的旧版本了。glibc 2.14 的rpm安装步骤,参考:https://blog.csdn.net/lxlmycsdnfree/article/details/80695593
大概7个需要安装的相关文件:
安装完glibc 2.14,然后再次执行hadoop checknative -a 命令,会发现返回的值都是不为空的。查看自己安装的glibc 新版本成功没有,命令是:strings /lib64/libc.so.6 | grep GLIBC
二. 迁移hbase数据
(1)选择迁移方法
旧集群的hbase里,就一个表,数据量大概四百多G, 迁移如果用 export/import的话,太慢,光export这个命令,就能执行40个小时。所以选用了distcp这个命令。
(2)执行命令前的一些配置工作:
A. 把旧集群机器上的 etc/hosts文件中的配置,复制粘贴,追加到 新机器的16-20机器上的etc/hosts文件中。也就是新集群机器上的hosts文件中,既有新集群机器的 hostname和ip的配置,又有旧集群的机器 hostname和ip的配置。如果不做这个步骤,distcp过程中会报错。
B. 16机器上的hadoop下的hdfs-site.xml文件中,还添加了以下配置,也是因为跨版本迁移的编码方式不一样,而添加的。
dfs.checksum.type CRC32
C. 最好把旧集群的hbase停掉,这样 distcp拷贝过程会很顺利,否则会报错。如果旧集群hbase实在不想停,那多执行几遍distcp命令,直到100%的数据都拷贝过来为止,没测过正确性,目测好像所有数据都拷过来了。
(3)执行命令:
16机器上,执行命令如下:hadoop distcp -update -skipcrccheck hftp://10.10.2x.xxx:50070/hbase/data/default/history_table hdfs://xx.xx.xx.16:9000/hbase/data/default/history_table
(4)命令详解:
其中的 -update -skipcrccheck 这个参数是必须的, 因为旧的集群,hadoop版本是2.2,新的hadoop版本是2.8,二者版本差异太大,编码方式不一样。旧集群的 前缀用了 hftp:// ,新集群的前缀用了 hftp://,也是因为跨版本集群的迁移。端口50070和9000,是分别在旧集群 和新集群的机器的 hadoop路径下的 hdfs-site.xml文件中查到的。
例如:
dfs.namenode.rpc-address.ns1.nn1 hadoop1:9000
(5)distcp常见错误:
首先,命令的参数之间不能有多余的空格,比如两三个空格。
其次,如果报running beyond physical memory limits 之类的错误,那就是需要修改Hadoop下的mapred-site.xml文件,里面添加内容有:
yarn.app.mapreduce.am.staging-dir
/user
yarn.app.mapreduce.am.resource.mb
8192
yarn.app.mapreduce.am.resource.cpu-vcores
1
mapreduce.job.ubertask.enable
false
yarn.app.mapreduce.am.command-opts
-Djava.net.preferIPv4Stack=true -Xmx4294967296
mapreduce.map.java.opts
-Djava.net.preferIPv4Stack=true -Xmx5368709120
mapreduce.reduce.java.opts
-Djava.net.preferIPv4Stack=true -Xmx6442450944
mapreduce.map.memory.mb
6144
mapreduce.map.cpu.vcores
1
mapreduce.reduce.memory.mb
8192
mapreduce.reduce.cpu.vcores
1
保存后,如果distcp还报一样的错误,那就修改hadoop路径下的share文件夹里的hadoop-distcp-2.x.x.jar 这个jar包,用命令jar -xvf hadoop-distcp-2.x.x.jar 解压,把里面的xml文件里的内存配置删除掉,类似如下:
mapred.job.map.memory.mb 1024 mapred.job.reduce.memory.mb 1024
保存此xml文件,然后用 jar -cvf hadoop-distcp-2.x.x.jar * 再次打包,并替换掉之前的hadoop-distcp-2.x.x.jar 包,并保证集群每台机器都用这个新的jar包。改这个jar包,是因为这个jar包里对内存的配置,可能会覆盖掉之前mapred-site.xml文件对内存的配置
三. 分配hbase数据 粗略看一眼数据量,比如浏览器访问 新集群机器 xx.xx.xx.16:50070 , 查看datanode下面大概的数据量,符合总数400多G。
16机器上,执行 hbase shell 命令,打开hbase命令窗口,执行 list , 发现并没有 表,因为distcp命令,把hbase数据,拷贝到datanode了,但是并没有和hbase挂钩。所以需要 退出hbase shell 窗口,需要依次执行:
hbase hbck -fixMeta (重新生成meta表数据,才能在hbase shell命令窗口看到 迁移过来的表),
hbase hbck -fixAssignments (分配到各个集群机器上)hbase hbck -repairHoles (修复漏洞,这个命令必须有,不然会出现 canal之类的都配置好后,hbase插入的数据的时间戳,慢两小时,报错信息如下:Requested row out of range for doMiniBatchMutation on HRegion ,用命令hbase hbck -details : 可以看出 hbase是否需要repair hole,不管有无hole,修复一下没坏处)
hbase shell命令窗口,可能用到的命令:
list 查看该空间下所有的表
scan '表名' 返回该表的所有数据
describe '表名' 返回表的结构描述
scan '表名',{FILTER=>"PrefixFilter('100990-154147')"} 查看 rowkey 为“100990-154147”开头的所有数据,其中-后面的这个数据一般为时间戳,单位为毫秒
get '表名','101244-1538396364000' 获取表中rowkey为101244-1538396364000的数据行
put '表名','100990-1541475190000','cf:q','54961736' 往表中插入一条数据:参数依次是表名,rowkey,列名,值,值得注意的是,时间戳是自动加的。
四. 迁移 canal
将老集群上的1.0.16 ,用scp -r命令 拷贝到 新集群的其中一个机器上,我选择了20机器。然后把canal-1.0.16/conf/example下的instance.properties文件中的canal.instance.mysql.slaveId值改了一下,比如之前旧集群的是1236,我这里改成1237 。因为canal相当于mysql的一个slave,测试的时候,想着 旧集群的canal和新集群的canal同时使用着,所以这里的slaveId改了一下。
依次启动 canal 和 hbase_netty.jar canal_netty.jar ,这两个jar,相当于canal客户端,canal_netty.jar 的代码,配置了20这个机器的root和机器密码,可以参考canal官方的canal client代码。hbase_netty.jar 里,配置了集群的信息,需要把新集群的core-site.xml、 hdfs-site.xml、hbase-site.xml 三个文件,拷贝到这个hbase_netty.jar的 项目里,替换掉就的xml文件即可。
打包jar包的时候,注意两点:
1. eclipse中对这两个jar包打包前,需要配置一下 run configuration,在run configuration里面的application里面指定一下main方法的位置。
2. eclipse打包这两个jar包, export 的时候,选择 成 Runnable JAR file, 否则上传到linux执行不起来。
五. 升级 旧项目的jdk、tomcat等
将旧项目的jdk1.6 tomcat6,升级成 jdk1.8 tomcat9,需要修改对应的jar包,从集群的hbase的lib目录下,拷贝了所有jar包,替换掉旧项目的jar包,并且旧项目的前端文件 tld文件,之前在 目录WEB-INF/tags下,由于新版本的tomcat 规则变了,查看tomcat9的apache-tomcat-9.0.12\webapps\examples\WEB-INF 路径下的每个文件,发现tld文件,应该放到WEB-INF/jsp2 路径下,所以项目的前端代码中,新建jsp2路径,将tld文件,移到它下面。
你可能感兴趣的:(HBase)
nosql数据库技术与应用知识点
皆过客,揽星河
NoSQL nosql 数据库 大数据 数据分析 数据结构 非关系型数据库
Nosql知识回顾大数据处理流程数据采集(flume、爬虫、传感器)数据存储(本门课程NoSQL所处的阶段)Hdfs、MongoDB、HBase等数据清洗(入仓)Hive等数据处理、分析(Spark、Flink等)数据可视化数据挖掘、机器学习应用(Python、SparkMLlib等)大数据时代存储的挑战(三高)高并发(同一时间很多人访问)高扩展(要求随时根据需求扩展存储)高效率(要求读写速度快)
浅谈MapReduce
Android路上的人
Hadoop 分布式计算 mapreduce 分布式 框架 hadoop
从今天开始,本人将会开始对另一项技术的学习,就是当下炙手可热的Hadoop分布式就算技术。目前国内外的诸多公司因为业务发展的需要,都纷纷用了此平台。国内的比如BAT啦,国外的在这方面走的更加的前面,就不一一列举了。但是Hadoop作为Apache的一个开源项目,在下面有非常多的子项目,比如HDFS,HBase,Hive,Pig,等等,要先彻底学习整个Hadoop,仅仅凭借一个的力量,是远远不够的。
hbase介绍
CrazyL-
云计算+大数据 hbase
hbase是一个分布式的、多版本的、面向列的开源数据库hbase利用hadoophdfs作为其文件存储系统,提供高可靠性、高性能、列存储、可伸缩、实时读写、适用于非结构化数据存储的数据库系统hbase利用hadoopmapreduce来处理hbase、中的海量数据hbase利用zookeeper作为分布式系统服务特点:数据量大:一个表可以有上亿行,上百万列(列多时,插入变慢)面向列:面向列(族)的
Apache HBase基础(基本概述,物理架构,逻辑架构,数据管理,架构特点,HBase Shell)
May--J--Oldhu
HBase HBase shell hbase物理架构 hbase逻辑架构 hbase
NoSQL综述及ApacheHBase基础一.HBase1.HBase概述2.HBase发展历史3.HBase应用场景3.1增量数据-时间序列数据3.2信息交换-消息传递3.3内容服务-Web后端应用程序3.4HBase应用场景示例4.ApacheHBase生态圈5.HBase物理架构5.1HMaster5.2RegionServer5.3Region和Table6.HBase逻辑架构-Row7.
HBase(一)——HBase介绍
weixin_30595035
大数据 数据库 数据结构与算法
HBase介绍1、关系型数据库与非关系型数据库(1)关系型数据库关系型数据库最典型的数据机构是表,由二维表及其之间的联系所组成的一个数据组织优点:1、易于维护:都是使用表结构,格式一致2、使用方便:SQL语言通用,可用于复杂查询3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询缺点:1、读写性能比较差,尤其是海量数据的高效率读写2、固定的表结构,灵活度稍欠3、高并发读写需求,传统关
HBase介绍
mingyu1016
数据库
概述HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》。HBase是GoogleBigtable的开源实现,它利用HadoopHDFS作为其文件存储系统,利用HadoopMapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务。HBase的表结构HBase以表的形式存储数据。表有行和列组成。列划分为
Hbase - 迁移数据[导出,导入]
kikiki5
>有没有这样一样情况,把一个集群中的某个表导到另一个群集中,或者hbase的表结构发生了更改,但是数据还要,比如预分区没做,导致某台RegionServer很吃紧,Hbase的导出导出都可以很快的完成这些操作。![](https://upload-images.jianshu.io/upload_images/9028759-4fb9aa8ca3777969.png?imageMogr2/auto
通过DBeaver连接Phoenix操作hbase
不想做咸鱼的王富贵
通过DBeaver连接Phoenix操作hbase前言本文介绍常用一种通用数据库工具Dbeaver,DBeaver可通过JDBC连接到数据库,可以支持几乎所有的数据库产品,包括:MySQL、PostgreSQL、MariaDB、SQLite、Oracle、Db2、SQLServer、Sybase、MSAccess、Teradata、Firebird、Derby等等。商业版本更是可以支持各种NoSQ
Hbase - kerberos认证异常
kikiki2
之前怎么认证都认证不上,问题找了好了,发现它的异常跟实际操作根本就对不上,死马当活马医,当时也是瞎改才好的,给大家伙记录记录。KrbException:ServernotfoundinKerberosdatabase(7)-LOOKING_UP_SERVER>>>KdcAccessibility:removestorm1.starsriver.cnatsun.security.krb5.KrbTg
kvm 虚拟机命令行虚拟机操作、制作快照和恢复快照以及工作常用总结
西京刀客
云原生(Cloud Native) 云计算 虚拟化 Linux C/C++ 服务器 linux kvm
文章目录kvm虚拟机命令行虚拟机操作、制作快照和恢复快照一、kvm虚拟机命令行虚拟机操作(创建和删除)查看虚拟机virt-install创建一个虚拟机关闭虚拟机重启虚拟机销毁虚拟机二、kvm制作快照和恢复快照**创建快照**工作常见问题创建快照报错::internalsnapshotsofaVMwithpflashbasedfirmwarearenotsupported检查虚拟机是否包含pflas
hadoop 0.22.0 部署笔记
weixin_33701564
大数据 java 运维
为什么80%的码农都做不了架构师?>>>因为需要使用hbase,所以开始对hbase进行学习。hbase是部署在hadoop平台上的NOSql数据库,因此在部署hbase之前需要先部署hadoop。环境:redhat5、hadoop-0.22.0.tar.gz、jdk-6u13-linux-i586.zipip192.168.1.128hostname:localhost.localdomain(
实时数仓之实时数仓架构(Hudi)(1),2024年最新熬夜整理华为最新大数据开发笔试题
2401_84181221
程序员 架构 大数据
+Hudi:湖仓一体数据管理框架,用来管理模型数据,包括ODS/DWD/DWS/DIM/ADS等;+Doris:OLAP引擎,同步数仓结果模型,对外提供数据服务支持;+Hbase:用来存储维表信息,维表数据来源一部分有Flink加工实时写入,另一部分是从Spark任务生产,其主要作用用来支持FlinkETL处理过程中的LookupJoin功能。这里选用Hbase原因主要因为Table的HbaseC
HBase 源码阅读(一)
Such Devotion
hbase 数据库 大数据
1.HMastermain方法在上文中MacosM1IDEA本地调试HBase2.2.2,我们使用HMaster的主函数使用"start"作为入参,启动了HMaster进程这里我们再深入了解下HMaster的运行机理publicstaticvoidmain(String[]args){LOG.info("STARTINGservice"+HMaster.class.getSimpleName())
HBase 源码阅读(四)HBase 关于LSM Tree的实现- MemStore
Such Devotion
hbase lsm-tree 数据库
4.MemStore接口Memstore的函数不能并行的被调用。调用者需要持有读写锁,这个的实现在HStore中我们放弃对MemStore中的诸多函数进行查看直接看MemStore的实现类AbstractMemStoreCompactingMemStoreDefaultMemStore4.1三个实现类的使用场景1.AbstractMemStore角色:基础抽象类作用:AbstractMemStor
大数据(Hbase简单示例)
BL小二
hbase 大数据 hadoop
importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.HBaseConfiguration;importorg.apache.hadoop.hbase.TableName;importorg.apache.hadoop.hbase.client.*;importorg.apache.hadoop.hbase
Hbase的简单使用示例
傲雪凌霜,松柏长青
后端 大数据 hbase 数据库 大数据
HBase是基于HadoopHDFS构建的分布式、列式存储的NoSQL数据库,适用于存储和检索超大规模的非结构化数据。它支持随机读写,并且能够处理PB级数据。HBase通常用于实时数据存取场景,与Hadoop生态紧密集成。使用HBase的Java示例前置条件HBase集群:确保HBase集群已经安装并启动。如果没有,你可以通过本地伪分布模式或Docker来运行HBase。Hadoop配置:HBas
快手HBase在千亿级用户特征数据分析中的应用与实践
王知无
声明:本文的原文是来自Hbase技术社区的一个PPT分享,个人做了整理和提炼。大家注意哈,这种会议PPT类的东西能学习到的更多的是技术方案和他人在实践过程中的经验。希望对大家有帮助。背景快手每天产生数百亿用户特征数据,分析师需要在跨30-90天的数千亿特征数据中,任意选择多维度组合(如:城市=北京&性别=男),秒级分析用户行为。针对这一需求,快手基于HBase自主研发了支持bitmap转化、存储、
ClickHouse与其他数据库的对比
九州Pro
ClickHouse 数据库 clickhouse 数据仓库 大数据 sql
目录1与传统关系型数据库的对比1.1性能差异1.2数据模型差异1.3适用场景差异2与其他列式存储数据库的对比2.1ApacheCassandra2.2HBase3与分布式数据库的对比3.1GoogleBigQuery3.2AmazonRedshift3.3Snowflake4ClickHouse的缺点5ClickHouse的其他优点1与传统关系型数据库的对比1.1性能差异ClickHouse是一种
Hbase、hive以及ClickHouse的介绍和区别?
damokelisijian866
hbase hive clickhouse
一、Hbase介绍:HBase是一个分布式的、面向列的开源数据库,由ApacheSoftwareFoundation开发,是Hadoop生态系统中的一个重要组件。HBase的设计灵感来源于Google的Bigtable论文,它通过提供类似于Bigtable的能力,在Hadoop之上构建了一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。HBase主要用于存储大量结构化数据,并支持随机读写访问,
Hive和Hbase的区别
傲雪凌霜,松柏长青
大数据 后端 hive hbase hadoop
Hive和HBase都是Hadoop生态系统中的重要组件,它们都能处理大规模数据,但各自有不同的适用场景和设计理念。以下是两者的主要区别:1.数据模型Hive:Hive类似于传统的关系型数据库(RDBMS),以表格形式存储数据。它使用SQL-like语言HiveQL来查询和处理数据,数据通常是结构化或半结构化的。HBase:HBase是一个NoSQL数据库,基于Google的BigTable模型。
HBase
傲雪凌霜,松柏长青
大数据 后端 hbase 数据库 大数据
ApacheHBase是一个基于Hadoop分布式文件系统(HDFS)构建的分布式、面向列的NoSQL数据库,主要用于处理大规模、稀疏的表结构数据。HBase的设计灵感来自Google的Bigtable,能够在海量数据中提供快速的随机读写操作,适合需要低延迟和高吞吐量的应用场景。HBase核心概念表(Table):HBase的数据存储在表中,与传统的关系型数据库不同,HBase的表是面向列族(Co
大数据面试题:说下为什么要使用Hive?Hive的优缺点?Hive的作用是什么?
蓦然_
大数据面试题 hive 大数据开发面试题 大数据面试
1、为什么要使用Hive?Hive是Hadoop生态系统中比不可少的一个工具,它提供了一种SQL(结构化查询语言)方言,可以查询存储在Hadoop分布式文件系统(HDFS)中的数据或其他和Hadoop集成的文件系统,如MapR-FS、Amazon的S3和像HBase(Hadoop数据仓库)和Cassandra这样的数据库中的数据。大多数数据仓库应用程序都是使用关系数据库进行实现的,并使用SQL作为
Hadoop组件
静听山水
Hadoop hadoop
这张图片展示了Hadoop生态系统的一些主要组件。Hadoop是一个开源的大数据处理框架,由Apache基金会维护。以下是每个组件的简短介绍:HBase:一个分布式、面向列的NoSQL数据库,基于GoogleBigTable的设计理念构建。HBase提供了实时读写访问大量结构化和半结构化数据的能力,非常适合大规模数据存储。Pig:一种高级数据流语言和执行引擎,用于编写MapReduce任务。Pig
Hbase BulkLoad用法
kikiki2
要导入大量数据,Hbase的BulkLoad是必不可少的,在导入历史数据的时候,我们一般会选择使用BulkLoad方式,我们还可以借助Spark的计算能力将数据快速地导入。使用方法导入依赖包compilegroup:'org.apache.spark',name:'spark-sql_2.11',version:'2.3.1.3.0.0.0-1634'compilegroup:'org.apach
EMR组件部署指南
ivwdcwso
运维 EMR 大数据 开源 运维
EMR(ElasticMapReduce)是一个大数据处理和分析平台,包含了多个开源组件。本文将详细介绍如何部署EMR的主要组件,包括:JDK1.8ElasticsearchKafkaFlinkZookeeperHBaseHadoopPhoenixScalaSparkHive准备工作所有操作都在/data目录下进行。首先安装JDK1.8:yuminstalljava-1.8.0-openjdk部署
Sublime text3+python3配置及插件安装
raysonfang
作者:方雷个人博客:http://blog.chargingbunk.cn/微信公众号:rayson_666(Rayson开发分享)个人专研技术方向:微服务方向:springboot,springCloud,Dubbo分布式/高并发:分布式锁,消息队列RabbitMQ大数据处理:Hadoop,spark,HBase等python方向:pythonweb开发一,前言在网上搜索了一些Python开发的
Spring Data:JPA与Querydsl
光图强
java
JPAJPA是java的一个规范,用于在java对象和数据库之间保存数据,充当面向对象领域模型和数据库之间的桥梁。它使用Hibernate、TopLink、IBatis等ORM框架实现持久性规范。SpringDataSpringData是Spring的一个子项目,用于简化数据库访问,支持NoSql数据和关系数据库。支持的NoSql数据库包括:Mongodb、redis、Hbase、Neo4j。Sp
HBase 源码阅读(二)
Such Devotion
hbase 数据库 大数据
衔接在上一篇文章中,HMasterCommandLine类中在startMaster();方法中//这里除了启动HMaster之外,还启动一个HRegionServerLocalHBaseClustercluster=newLocalHBaseCluster(conf,mastersCount,regionServersCount,LocalHMaster.class,HRegionServer.
大数据技术之HBase 与 Hive 集成(7)
大数据深度洞察
Hbase 大数据 hbase hive
目录使用场景HBase与Hive集成使用1)案例一2)案例二使用场景如果大量的数据已经存放在HBase上面,并且需要对已经存在的数据进行数据分析处理,那么Phoenix并不适合做特别复杂的SQL处理。此时,可以使用Hive映射HBase的表格,之后通过编写HQL进行分析处理。HBase与Hive集成使用Hive安装https://blog.csdn.net/qq_45115959/article/
【HBase之轨迹】(1)使用 Docker 搭建 HBase 集群
寒冰小澈IceClean
【大数据之轨迹】 【Docker之轨迹】 笔记 hbase docker hadoop
——目录——0.前置准备1.下载安装2.配置(重)3.启动与关闭4.搭建高可用HBase前言(贫穷使我见多识广)前边经历了Hadoop,Zookeeper,Kafka,他们的集群,全都是使用Docker搭建的一开始的我认为,把容器看成是一台台独立的服务器就好啦也确实是这样,但端口映射问题,让我一路以来磕碰了太多太多,直到现在的HBase,更是将Docker集群所附带的挑战性,放大到了极致(目前是如
java Illegal overloaded getter method with ambiguous type for propert的解决
zwllxs
java jdk
好久不来iteye,今天又来看看,哈哈,今天碰到在编码时,反射中会抛出
Illegal overloaded getter method with ambiguous type for propert这么个东东,从字面意思看,是反射在获取getter时迷惑了,然后回想起java在boolean值在生成getter时,分别有is和getter,也许我们的反射对象中就有is开头的方法迷惑了jdk,
IT人应当知道的10个行业小内幕
beijingjava
工作 互联网
10. 虽然IT业的薪酬比其他很多行业要好,但有公司因此视你为其“佣人”。
尽管IT人士的薪水没有互联网泡沫之前要好,但和其他行业人士比较,IT人的薪资还算好点。在接下的几十年中,科技在商业和社会发展中所占分量会一直增加,所以我们完全有理由相信,IT专业人才的需求量也不会减少。
然而,正因为IT人士的薪水普遍较高,所以有些公司认为给了你这么多钱,就把你看成是公司的“佣人”,拥有你的支配
java 实现自定义链表
CrazyMizzz
java 数据结构
1.链表结构
链表是链式的结构
2.链表的组成
链表是由头节点,中间节点和尾节点组成
节点是由两个部分组成:
1.数据域
2.引用域
3.链表的实现
&nbs
web项目发布到服务器后图片过一会儿消失
麦田的设计者
struts2 上传图片 永久保存
作为一名学习了android和j2ee的程序员,我们必须要意识到,客服端和服务器端的交互是很有必要的,比如你用eclipse写了一个web工程,并且发布到了服务器(tomcat)上,这时你在webapps目录下看到了你发布的web工程,你可以打开电脑的浏览器输入http://localhost:8080/工程/路径访问里面的资源。但是,有时你会突然的发现之前用struts2上传的图片
CodeIgniter框架Cart类 name 不能设置中文的解决方法
IT独行者
CodeIgniter Cart 框架
今天试用了一下CodeIgniter的Cart类时遇到了个小问题,发现当name的值为中文时,就写入不了session。在这里特别提醒一下。 在CI手册里也有说明,如下:
$data = array(
'id' => 'sku_123ABC',
'qty' => 1,
'
linux回收站
_wy_
linux 回收站
今天一不小心在ubuntu下把一个文件移动到了回收站,我并不想删,手误了。我急忙到Nautilus下的回收站中准备恢复它,但是里面居然什么都没有。 后来我发现这是由于我删文件的地方不在HOME所在的分区,而是在另一个独立的Linux分区下,这是我专门用于开发的分区。而我删除的东东在分区根目录下的.Trash-1000/file目录下,相关的删除信息(删除时间和文件所在
jquery回到页面顶端
知了ing
html jquery css
html代码:
<h1 id="anchor">页面标题</h1>
<div id="container">页面内容</div>
<p><a href="#anchor" class="topLink">回到顶端</a><
B树、B-树、B+树、B*树
矮蛋蛋
B树
原文地址:
http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.html
B树
即二叉搜索树:
1.所有非叶子结点至多拥有两个儿子(Left和Right);
&nb
数据库连接池
alafqq
数据库连接池
http://www.cnblogs.com/xdp-gacl/p/4002804.html
@Anthor:孤傲苍狼
数据库连接池
用MySQLv5版本的数据库驱动没有问题,使用MySQLv6和Oracle的数据库驱动时候报如下错误:
java.lang.ClassCastException: $Proxy0 cannot be cast to java.sql.Connec
java泛型
百合不是茶
java泛型
泛型
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,任意化的缺点就是要实行强制转换,这种强制转换可能会带来不安全的隐患
泛型的特点:消除强制转换 确保类型安全 向后兼容
简单泛型的定义:
泛型:就是在类中将其模糊化,在创建对象的时候再具体定义
class fan
javascript闭包[两个小测试例子]
bijian1013
JavaScript JavaScript
一.程序一
<script>
var name = "The Window";
var Object_a = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){
探索JUnit4扩展:假设机制(Assumption)
bijian1013
java Assumption JUnit 单元测试
一.假设机制(Assumption)概述 理想情况下,写测试用例的开发人员可以明确的知道所有导致他们所写的测试用例不通过的地方,但是有的时候,这些导致测试用例不通过的地方并不是很容易的被发现,可能隐藏得很深,从而导致开发人员在写测试用例时很难预测到这些因素,而且往往这些因素并不是开发人员当初设计测试用例时真正目的,
【Gson四】范型POJO的反序列化
bit1129
POJO
在下面这个例子中,POJO(Data类)是一个范型类,在Tests中,指定范型类为PieceData,POJO初始化完成后,通过
String str = new Gson().toJson(data);
得到范型化的POJO序列化得到的JSON串,然后将这个JSON串反序列化为POJO
import com.google.gson.Gson;
import java.
【Spark八十五】Spark Streaming分析结果落地到MySQL
bit1129
Stream
几点总结:
1. DStream.foreachRDD是一个Output Operation,类似于RDD的action,会触发Job的提交。DStream.foreachRDD是数据落地很常用的方法
2. 获取MySQL Connection的操作应该放在foreachRDD的参数(是一个RDD[T]=>Unit的函数类型),这样,当foreachRDD方法在每个Worker上执行时,
NGINX + LUA实现复杂的控制
ronin47
nginx lua
安装lua_nginx_module 模块
lua_nginx_module 可以一步步的安装,也可以直接用淘宝的OpenResty
Centos和debian的安装就简单了。。
这里说下freebsd的安装:
fetch http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar zxvf lua-5.1.4.tar.gz
cd lua-5.1.4
ma
java-递归判断数组是否升序
bylijinnan
java
public class IsAccendListRecursive {
/*递归判断数组是否升序
* if a Integer array is ascending,return true
* use recursion
*/
public static void main(String[] args){
IsAccendListRecursiv
Netty源码学习-DefaultChannelPipeline2
bylijinnan
java netty
Netty3的API
http://docs.jboss.org/netty/3.2/api/org/jboss/netty/channel/ChannelPipeline.html
里面提到ChannelPipeline的一个“pitfall”:
如果ChannelPipeline只有一个handler(假设为handlerA)且希望用另一handler(假设为handlerB)
来
Java工具之JPS
chinrui
java
JPS使用
熟悉Linux的朋友们都知道,Linux下有一个常用的命令叫做ps(Process Status),是用来查看Linux环境下进程信息的。同样的,在Java Virtual Machine里面也提供了类似的工具供广大Java开发人员使用,它就是jps(Java Process Status),它可以用来
window.print分页打印
ctrain
window
function init() {
var tt = document.getElementById("tt");
var childNodes = tt.childNodes[0].childNodes;
var level = 0;
for (var i = 0; i < childNodes.length; i++) {
安装hadoop时 执行jps命令Error occurred during initialization of VM
daizj
jdk hadoop jps
在安装hadoop时,执行JPS出现下面错误
[slave16]
[email protected] :/tmp/hsperfdata_hdfs# jps
Error occurred during initialization of VM
java.lang.Error: Properties init: Could not determine current working
PHP开发大型项目的一点经验
dcj3sjt126com
PHP 重构
一、变量 最好是把所有的变量存储在一个数组中,这样在程序的开发中可以带来很多的方便,特别是当程序很大的时候。变量的命名就当适合自己的习惯,不管是用拼音还是英语,至少应当有一定的意义,以便适合记忆。变量的命名尽量规范化,不要与PHP中的关键字相冲突。 二、函数 PHP自带了很多函数,这给我们程序的编写带来了很多的方便。当然,在大型程序中我们往往自己要定义许多个函数,几十
android笔记之--向网络发送GET/POST请求参数
dcj3sjt126com
android
使用GET方法发送请求
private static boolean sendGETRequest (String path,
Map<String, String> params) throws Exception{
//发送地http://192.168.100.91:8080/videoServi
linux复习笔记 之bash shell (3) 通配符
eksliang
linux 通配符 linux通配符
转载请出自出处:
http://eksliang.iteye.com/blog/2104387
在bash的操作环境中有一个非常有用的功能,那就是通配符。
下面列出一些常用的通配符,如下表所示 符号 意义 * 万用字符,代表0个到无穷个任意字符 ? 万用字符,代表一定有一个任意字符 [] 代表一定有一个在中括号内的字符。例如:[abcd]代表一定有一个字符,可能是a、b、c
Android关于短信加密
gqdy365
android
关于Android短信加密功能,我初步了解的如下(只在Android应用层试验):
1、因为Android有短信收发接口,可以调用接口完成短信收发;
发送过程:APP(基于短信应用修改)接受用户输入号码、内容——>APP对短信内容加密——>调用短信发送方法Sm
asp.net在网站根目录下创建文件夹
hvt
.net C# hovertree asp.net Web Forms
假设要在asp.net网站的根目录下建立文件夹hovertree,C#代码如下:
string m_keleyiFolderName = Server.MapPath("/hovertree");
if (Directory.Exists(m_keleyiFolderName))
{
//文件夹已经存在
return;
}
else
{
try
{
D
一个合格的程序员应该读过哪些书
justjavac
程序员 书籍
编者按:2008年8月4日,StackOverflow 网友 Bert F 发帖提问:哪本最具影响力的书,是每个程序员都应该读的?
“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本, 你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西。”
很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员书单,不过都是推荐数
单实例实践
跑龙套_az
单例
1、内部类
public class Singleton {
private static class SingletonHolder {
public static Singleton singleton = new Singleton();
}
public Singleton getRes
PO VO BEAN 理解
q137681467
VO DTO po
PO:
全称是 persistant object持久对象 最形象的理解就是一个PO就是数据库中的一条记录。 好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。
BO:
全称是 business object:业务对象 主要作用是把业务逻辑封装为一个对象。这个对
战胜惰性,暗自努力
金笛子
努力
偶然看到一句很贴近生活的话:“别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得吊儿郎当,和你一样会抱怨,而只有你自己相信这些都是真的,最后也只有你一人继续不思进取。”很多句子总在不经意中就会戳中一部分人的软肋,我想我们每个人的周围总是有那么些表现得“吊儿郎当”的存在,是否你就真的相信他们如此不思进取,而开始放松了对自己的要求随波逐流呢?
我有个朋友是搞技术的,平时嘻嘻哈哈,以
NDK/JNI二维数组多维数组传递
wenzongliang
二维数组 jni NDK
多维数组和对象数组一样处理,例如二维数组里的每个元素还是一个数组 用jArray表示,直到数组变为一维的,且里面元素为基本类型,去获得一维数组指针。给大家提供个例子。已经测试通过。
Java_cn_wzl_FiveChessView_checkWin( JNIEnv* env,jobject thiz,jobjectArray qizidata)
{
jint i,j;
int s