大数据框架
文章平均质量分 61
墨染百城
目前专注于数据分析、大数据计算方面的学习
展开
-
Hadoop2.7.3完全分布式集群安装过程
需要安装的软件Hadoop包含HDFS集群和YARN集群。部署Hadoop就是部署HDFS和YARN集群。机器数量、角色4台。 NameNode 1台、DataNode 3台 主机名 IP 角色 amaster 192.168.37.143 Name Node:9000Resource Manager anode1 192.168.37.129 Data NodeN原创 2017-02-16 01:01:13 · 2418 阅读 · 0 评论 -
Python与ZooKeeper集群连接
由于项目的需要,需要学习Python客户端连接ZooKeeper集群,并实现创建临时节点、获得指定的路径下的信息、监听子节点变化的功能。环境配置ZooKeeper集群的安装可以参考http://blog.csdn.net/mrbcy/article/details/54767484使用下面的命令安装kazoopip install kazoo基本使用这一部分可参考官方文档:http://kazoo原创 2017-03-08 11:21:42 · 8640 阅读 · 0 评论 -
MapReduce初体验
首先跑一下Hadoop自己带的world count。先得上传文件到HDFS。hadoop fs -mkdir -p /wordcount/inputhadoop fs -put GitHubLog.txt /wordcount/input然后运行hadoop jar /root/apps/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-原创 2017-02-18 16:10:01 · 363 阅读 · 0 评论 -
Hadoop NameNode的Federation
在极端情况下,HDFS上的文件特别多,内存不够用,之前的HA本质上还是一个NameNode,为了应对这种需求就需要多个NameNode。此时不同的NameNode持有的数据都不一样,都在同时对外提供服务。为了保持服务的一致性,可以分目录来进行区分。比如分为/ns1和/ns2,就像两个分区那样。是一个逻辑路径,映射到实际的hdfs路径下面。此时,两个NameNode就变成了Federation。Fed原创 2017-03-22 19:09:10 · 568 阅读 · 0 评论 -
Hadoop中的高可用机制
HDFS的高可用可用性用小时来衡量,如:7*24小时、364 * 24高可用不能简单的通过keepalive来进行NameNode的高可用。因为NameNode需要有大量的状态信息维护。可行的方法:两个NameNode,一个对外工作(active),一个后补(standby),这就涉及到元数据同步的问题。可以将edits保存到第三方,standy的NameNode即可收到edits,从而保持元数据的原创 2017-03-22 18:45:00 · 975 阅读 · 0 评论 -
Hadoop HA的搭建
我们目前只有4台机器,所以需要好好规划一下机器的角色。如果机器多最好还是分得开一点 机器名 角色 amaster NameNodeResourceManagerZooKeeper anode1 NameNodeZooKeeperJournalNode anode2 DataNodeNodeManagerZooKeeperJournalNode anode3 Da原创 2017-03-22 21:15:34 · 440 阅读 · 0 评论 -
Hive及其工作机制简介
Hive是一个基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一个表。并提供类SQL查询功能。数据仓库数据库是用来支撑在线联机业务的。比如页面上的数据的展示,保存客户操作产生的数据。这类要求变更是实时的、事务的。数据仓库:如果联机数据库中的数据太大了,需要将历史信息导入到离线的仓库中。可以存入各种各样的系统的数据。可以按照一定主题来组织这些表。每一个主题中的数据可能结构跟系统的表不同原创 2017-03-22 22:34:57 · 2218 阅读 · 0 评论 -
Hive建表语句和分区表概念及示范
Hive的建表语句CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_commen原创 2017-03-30 12:12:24 · 5241 阅读 · 0 评论 -
Hive分桶的作用
分区的主要作用是可用允许我们只统计一部分内容,加快统计的速度。什么是分桶假如我们有个表t_buck。create table t_buck(id string,name string)clustered by (id) sort by(id) into 4 buckets;指定了根据id分成4个桶。只是说明了表会分桶,具体的分区需要在导入数据时产生。最好的导入数据方式是insert into t原创 2017-03-30 17:01:40 · 9247 阅读 · 0 评论 -
MapReduce过程详解
在描述具体过程之前,先上一幅大图。MapTask的工作流程Map Task在工作时,使用FileInputFormat组件读取输入文件(默认使用TextInputFormat),把数据变成<key,value>,写新的InputFormat即可处理不同的数据(图片、视频、数据库中的记录等)。一次读一行是TextInputFormat的特性,并不代表就只能这么读。但是无论怎么读,必须返回<key,va原创 2017-03-15 17:19:25 · 404 阅读 · 0 评论 -
广告精准推送项目介绍
广告中介商:每个用户的目标客户不同,找的广告位也就不一样。广告提供商(网站、APP):想拉业务,也去找中介。将广告栏位提供给中介商。广告用户(各行业厂商):想去打广告,需要去找一些广告提供商。但是很难找到靠谱的,所以需要去找中介商。如果是一个综合网站,同一个广告栏位需要根据不同的浏览者展示不同的广告。广告商应该提供一个界面,供用户选择投放对象的性别、年龄等。然后网站去判断浏览者的这些属性,如果匹配,原创 2017-04-01 12:16:40 · 3947 阅读 · 0 评论 -
Hive安装&初体验
下载&解压从这个地址下载Hive1.2.1 https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-1.2.1/apache-hive-1.2.1-bin.tar.gz然后使用下面的命令解压到指定目录下面:tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /root/apps/然后使用下面的命令改一下名字:mv原创 2017-03-25 23:49:31 · 360 阅读 · 0 评论 -
将Hive启动为服务
我们之前使用的Shell方式与Hive交互只是Hive交互方式中的一种,还有一种就是将Hive启动为服务,然后运行在一个节点上,那么剩下的节点就可以使用客户端来连接它,从而也可以使用Hive的数据分析服务。前台模式可以使用下面的命令来将Hive启动为服务。/root/apps/hive-1.2.1/bin/hiveserver2后台模式也可以用下面的命令在后台启动Hive服务。nohup bin/原创 2017-03-26 00:18:27 · 1875 阅读 · 0 评论 -
YARN的运行机制
YARN是运算资源的调度系统。运算资源包括运行程序的jar包,配置文件,CPU,内存,IO等。使用了linux的资源隔离机制cgroup实现了CPU和内存的隔离。它的运行容器叫做container。每个container中包含了一定的CPU+内存。docker,openstack等虚拟化框架都使用了cgroup。首先,客户端启动后获取一个YARNRunner,它本质上是一个动态代理对象。它负责将任务原创 2017-03-16 22:08:18 · 975 阅读 · 0 评论 -
Ubuntu14 安装 Ambari 2.2.2
安装Ambari2.2.2有两种方式,分别是从公共仓库中下载和自己从源代码编译。这里我们选择从公共仓库中下载Ambari重要的事提前说,要选择64位的Ubuntu版本重要的事提前说,要选择64位的Ubuntu版本重要的事提前说,要选择64位的Ubuntu版本以下的操作全部用root身份执行。配置Hosts文件最好只保留下面的样子:192.168.37.143 amaster.mrbcy.tech原创 2017-02-15 22:39:27 · 1181 阅读 · 0 评论 -
Hadoop离线分析在实际项目中的架构
点击流日志数据挖掘概述很多网站(比如电商)都会收集用户的浏览行为,然后进行分析能够实现广告推荐等功能,可以改善网站设计,提高企业利润。数据收集预埋一些js代码,为页面上的一些标签添加绑定事件。当事件发生时可以使用ajax请求到后台。Web服务器的日志中将会记录这些事件信息,从而获得不断增长的日志文件。数据处理流程一般来说离线分析都是这个流程。各流程概述:数据采集:定制开发采集程序,或使用开源框架F原创 2017-02-15 18:24:09 · 3590 阅读 · 0 评论 -
MapReduce的核心思想概述
为什么需要MapReduceMapReduce是一个分布式运算程序的编程框架。核心功能是用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序。什么是分布式程序如果一批文本文件有2G大小。假设我们要统计每个单词出现的总次数。我们无法单独的用一台机器处理。我们要写一个程序同时在多个机器上运行。首先第一个问题是如何存放文件?将文件存放到HDFS上去。每个机器只能统计到自己机器上的数据,但是无原创 2017-03-03 13:59:15 · 9008 阅读 · 0 评论 -
Win10-x64编译Hadoop2.7.3
参考资料https://svn.apache.org/repos/asf/hadoop/common/trunk/BUILDING.txt http://note.youdao.com/share/?id=4dfbbc5b4048654026f571c04924f437&type=note#/http://stackoverflow.com/questions/31295963/hadoop-on-原创 2017-02-19 19:08:16 · 6564 阅读 · 8 评论 -
Hdfs shell命令操作
本篇博客介绍Hadoop的HDFS客户端的基本shell命令查看文件列表hadoop fs -ls /上传文件hadoop fs -put /root/GitHubLog.txt /然后再用ls来查看一下文件列表:hadoop fs -ls /输出结果为:Found 1 items-rw-r--r-- 2 root supergroup 23562 2017-02-18 12:53原创 2017-02-18 13:33:11 · 525 阅读 · 0 评论 -
Hdfs Java API初探
这篇博客我们来体验通过Java API来访问HDFS。Windows上配置环境变量解压Hadoop,然后把Hadoop的根目录配置到HADOOP_HOME环境变量里面然后把HADOOP_HOME/lib和HADOOP_HOME/bin配置到path里面。替换bin目录要把官网下载的Hadoop目录下面的bin目录替换成Windows下编译的Hadoop的bin目录。开始时我没做这一步,上传文件成功了原创 2017-02-19 22:45:35 · 488 阅读 · 0 评论 -
HDFS读写数据流程
概述HDFS集群分为两大角色:NameNode、DataNode (Secondary Namenode)NameNode负责管理整个文件系统的元数据DataNode 负责管理用户的文件数据块文件会按照固定的大小(blocksize)切成若干块后分布式存储在若干台datanode上每一个文件块可以有多个副本,并存放在不同的datanode上Datanode会定期向Namenode汇报自原创 2017-02-20 19:45:27 · 1104 阅读 · 0 评论 -
NameNode管理元数据的机制
NameNode的职责:负责客户端请求的响应和元数据的管理(查询、修改)。这篇博客主要说说NameNode元数据的管理。元数据的存储机制内存保存一份操作日志文件image镜像文件更新流程在内存中更新记录操作日志定期把操作日志和映像(fsimage)进行合并(check point),这项任务非常繁重,交给secondary namenode来做。check point流程check原创 2017-02-20 23:30:16 · 1572 阅读 · 0 评论 -
DataNode掉线判定时限
DataNode职责存储管理用户的文件块数据定期向namenode汇报自身所持有的block信息(通过心跳信息上报) (这点很重要,因为,当集群中发生某些block副本失效时,集群如何恢复block初始副本数量的问题)配置文件如下:<property> <name>dfs.blockreport.intervalMsec</name> <value>3600000</valu原创 2017-02-20 23:31:14 · 1308 阅读 · 0 评论 -
HDFS Java API再探
有时对于MapReduce等框架来说,需要有一套更底层的API来获取某个指定文件中的一部分数据,而不是一整个文件。一方面来说,获取整个文件是对网络的很大压力;另一方面,可能整个文件非常大,客户端也存不下。因此这篇博客再体验一下HDFS的流式API。测试类代码package tech.mrbcy.bigdata.hdfs;import java.io.FileInputStream;import ja原创 2017-02-21 20:14:17 · 398 阅读 · 0 评论 -
使用Hadoop中的RPC框架
Hadoop中自己提供了一个RPC的框架。集群中各节点的通讯都使用了那个框架,挺有意思的。我们自己来使用一下看看。示例代码已经上传到http://download.csdn.net/detail/mrbcy/9760207服务端业务接口首先定义业务方法的接口:ClientNamenodeProtocolClientNamenodeProtocol.javapackage tech.mrbcy.had原创 2017-02-22 01:11:54 · 655 阅读 · 0 评论 -
ZooKeeper过期续订的实现
问题概述使用客户端连接ZooKeeper过程中有时会因为网络延时的原因跟ZooKeeper集群断开连接。一旦断开的时间超过了配置文件中规定的时间,ZooKeeper集群就会设置sessionId过期,并清空该客户端产生的临时数据。而即使后来该客户端又重新连接到了ZooKeeper集群,ZooKeeper集群会发送一个Expired事件通知客户端会话已经过期。问题的解决要重新连接到ZooKeeper集原创 2017-02-14 00:25:45 · 1769 阅读 · 0 评论 -
ZooKeeper简介与安装
ZooKeeper简介与安装ZooKeeper是一个非常流行的分布式系统协调服务。目前的应用非常广泛。ZooKeeper简介与安装ZooKeeper简介特点功能ZooKeeper的应用场景服务器主从选举批量更新配置其他ZooKeeper集群的角色分配ZooKeeper安装安装JDK安装过程下载ZooKeeper安装到主节点将ZooKeeper安装到其他节点中启动ZooK原创 2017-01-28 20:34:48 · 906 阅读 · 0 评论 -
【ZooKeeper】分布式系统服务器上下线自动感知程序开发
需求概述一个集群来提供服务。集群中的服务器会动态变化,服务器会上线、下线或宕机。此时客户端应该能够知道服务器状态的变化情况以选择一个最好的服务器提供服务。客户端能获知服务器上下线状态的变化。解决方案使用ZooKeeper框架。服务器启动时先向ZooKeeper集群注册,写入自己的信息。注册的节点是一种临时节点。最好也是序列化的节点客户端启动时获取服务器父目录下的子节点列表并注册监听,获取到当前在线的原创 2017-01-31 00:26:35 · 786 阅读 · 0 评论 -
ZooKeeper的Java Api初探
ZooKeeper的Java Api初探首先,新建一个Java项目,然后创建一个lib文件夹,并将zookeeper目录下的zookeeper-3.4.9.jar以及ZooKeeper/lib下的jar包拷贝到项目的lib下。如下图所示。然后把lib下的jar包都加入bulidpath下面。然后我们创建一个简单的ZooKeeper客户端,用JUnit框架来体验一些Java Api.代码如下:pack原创 2017-01-30 23:03:39 · 742 阅读 · 0 评论 -
Hadoop生态圈介绍
Hadoop是一个分布式框架,底层的rpc也是用的netty。Spark2.0以后也用netty做rpc。推荐Scala的书:《快学Scala》、《Scala编程指南》什么是HadoopHadoop是一套开源的平台中间件Hadoop是服务器集群,在集群上执行我们的代码广义上来说,Hadoop是指一个更广泛的概念——Hadoop生态圈Hadoop的核心组件HDFS分布式文件系统。有效利用各节原创 2017-02-15 14:48:33 · 2275 阅读 · 0 评论 -
如何在Windows中运行MapReduce程序
Windows上配置环境变量解压Hadoop,然后把Hadoop的根目录配置到HADOOP_HOME环境变量里面然后把HADOOP_HOME/lib和HADOOP_HOME/bin配置到path里面。替换bin目录要在Windows运行MapReduce,你首先需要编译Windows版的Hadoop的应用程序。然后把官网下载的Hadoop目录下面的bin目录替换成Windows下编译的Hadoop的原创 2017-03-16 22:42:19 · 2804 阅读 · 0 评论