在我们的手机应用商店项目中,随着第三方应用的增长,传统的文件系统已经无法满足下载包的存储,经过初步考虑,我们打算使用hdfs来存储我们的下载包。
hdfs作为一种分布式存储方案,在可扩展性,稳定性方面有很大的优势,当磁盘不够时,只需要添加datanode,不影响下载服务,当一台datanode机器网络或硬件出现问题,也不会影响下载服务,hdfs会自动把出问题的datanode上的数据转移到其他机器上,缺点是当namenode出现故障时,会导致所有文件无法下载,也就是namenode的单点问题。
一 hdfs文件下载流程
1 客户端向datanode请求下载文件
2 datanode 检查文件是否存在,是,返回文件对应的datanode
3 客户端根据返回的datanode依次请求数据块
4 datanode返回数据块
根据以上流程 一次下载客户端需要多次网络连接 客户端首先需要连接hdfs的namenode, 然后再连接datanode
二 环境搭建
本次是在单台服务器上搭建hdfs环境,首先下载hadoop-0.20.2包,解压到目录下
1 在hadoop-env.sh中配置jdk路径,具体配置如下
export JAVA_HOME=/usr/local/jdk1.7.0_02
2 在hdfs-site.xml中配置namenode和datanode文件的存储路径
,具体配置如下
<name>dfs.name.dir</name>
<value>/data/work/hadoop-0.20.2/datalog1,/data/work/hadoop-0.20.2/datalog2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/work/hadoop-0.20.2/data1,/data/work/hadoop-0.20.2/data2</value>
</property>
3 在core-site.xml中配置hdfs访问ip和端口,具体配置如下
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/work/hadoop-0.20.2/temp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.0.1:9000</value>
</property>
</configuration>
4 在mapred-site.xml中配置map计算的ip和端口,具体配置如下
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.0.1:9001</value>
</property>
</configuration>
5 配置masters,具体配置如下
192.168.0.1
6 配置slaves,具体配置如下
192.168.0.1
hdfs端口为9000,datanode的默认端口为50010,在iptables中需要开放这两个端口
三 下载测试
测试代码如下
public static void main(String[] args) throws Exception {
try {
readFromHdfs();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
System.out.println("SUCCESS");
}
}
/**从HDFS上读取文件*/
private static void readFromHdfs() throws FileNotFoundException,IOException {
long starttime=System.currentTimeMillis();
String dst = "hdfs://192.168.0.1:9000/user/data/qq.apk";
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(dst), conf);
FSDataInputStream hdfsInStream = fs.open(new Path(dst));
OutputStream out = new FileOutputStream("d:/qq-hdfs.apk");
byte[] ioBuffer = new byte[1024];
int readLen = hdfsInStream.read(ioBuffer);
while(-1 != readLen){
out.write(ioBuffer, 0, readLen);
readLen = hdfsInStream.read(ioBuffer);
}
out.close();
hdfsInStream.close();
fs.close();
long endtime=System.currentTimeMillis();
endtime=endtime-starttime;
System.out.println("时间为"+endtime);
}
经过多次测试 5,5M的下载包,普通文件下载时间为21秒,通过HDFS下载速度为24秒 相差不是很大
分享到:
相关推荐
在这样的平台下,客户端应用程序可以方便地利用数据,并执行对智能手机和手机服务器的网络计算任务。平台允许应用程序无需考虑云的物理性质即可抽象使用分布式资源。通过对Hadoop在Android平台上的移植,使之能够...
本文的研究背景是为某吊篮公司开发智能吊篮云平台,该平台利用新塘-N32926单片机对吊篮进行数据采集、分析和操作,通过手机应用和Web网站实现工程流程的控制和实时监控。在这个过程中,平台需要处理大量的多媒体数据...
云计算技术在高校教学资源共享平台中的应用,可以帮助高校打破传统的地域和时间的限制,实现更加灵活高效的教学资源共享。 云计算技术在高校教学资源共享平台的应用研究中,首先提到了云计算的特点。这些特点包括...
在数据挖掘平台中,IaaS层负责提供硬件资源,PaaS层提供数据处理和分析框架,而SaaS层则面向用户提供友好的数据分析结果展示和应用接口。 其次,平台的架构设计应当考虑以下几个关键组件: 1. 数据采集:智能手机...
在数字化时代,手机已成为人们生活中不可或缺的一部分,而手机应用市场也随着移动设备的普及而飞速发展。本文旨在利用数据挖掘技术,对手机应用市场的现状进行分析,进而为手机应用市场的开发提出具体的建议,并设计...
在本案例中,提供的两张图片分别达到了70M和140M的大小,这在日常浏览网页或手机应用中并不常见,但它们是测试和学习高分辨率图片处理的理想资源。 其次,超高分辨率图片的下载涉及到网络传输速度和带宽管理。由于...
时序数据在实时数据开发平台中的处理和应用是一个关键的话题,特别是在大数据和实时大数据领域。时序数据是指按照时间顺序连续产生的数据,如传感器数据、交易记录、网络流量等,这类数据通常具有高并发、高速率和高...
在实践中,中国移动手机阅读基地的Hadoop Hive数据仓库平台已经稳定运营了一年左右,日处理话单量达到近300种,日均数据量近1.5TB,业务调度节点近1000个,这说明该系统已经能够有效应对大规模数据处理和管理的需求...
数据在电商平台中的应用可以分为三个层次: - **直接展现**:例如销售报表、库存状态等,直接展示给用户或管理人员。 - **帮助引导**:通过对数据的实时分析,为运营人员提供决策支持,如实时销售趋势、库存预警等。...
在当前的数字化时代,手机已经成为了我们日常生活中不可或缺的一部分,而手机领域的图像资源更是丰富多彩,包括手机产品图、用户评测图、广告海报等。为了高效地获取和管理这些图像资源,一个面向手机领域的图像资源...
总结来说,本教学计划以培养具备全面理论知识和实操技能的大数据平台工程师为目标,通过系统的学习和实践,让学生能够独立完成大数据平台的搭建,并在企业环境中灵活运用和优化,以适应不断发展的大数据技术需求。
【时序数据处理在滴滴实时数据开发平台中的应用】 在滴滴的实时数据开发平台中,时序数据的处理和应用是关键组成部分,旨在提高数据处理效率、降低延迟并确保服务稳定性。时序数据通常指的是随着时间变化而连续产生...
本报告主要探讨了大数据平台在推荐广告中的具体应用,涵盖了从数据采集到推荐算法等多个关键环节。 首先,大数据平台的核心是其架构,包括数据存储、实时离线处理、监控管理以及调度等部分。在数据存储方面,使用了...
总结来说,"Spark企业经典案例之手机app流量统计"这个主题涵盖了大数据处理的全链条,包括数据采集、预处理、存储、分析和可视化,展示了Spark在大数据应用中的强大能力。通过深入理解和实践这些知识点,我们可以...
在技术架构上,小米云平台基于一系列开源软件,如Hadoop、HBase、HDFS、OpenStack等,构建了强大的分布式计算和存储能力。它拥有四个大型数据中心,超过2400台虚拟机,总计5400个核心、60TB内存和1500TB磁盘空间,...
【标题】:“互联网+”人工智能在计算机网络技术中的应用 【描述】:本文探讨了“互联网+”背景下,人工智能如何与计算机网络技术相结合,提升其应用水平。通过分析人工智能的基本概念和重要性,以及Hadoop云计算...
在当今信息化社会,手机已经成为人们日常生活中不可或缺的一部分,其中存储的各类信息,如短信、联系人、重要文件等,对个人和工作都至关重要。然而,手机数据的安全性问题一直困扰着用户,一旦丢失或损坏,可能导致...
Hadoop的学习包括基础架构、核心组件如HDFS和MapReduce,以及在企业中的应用等。对于有志于数据科学、数据仓库、数据湖构建等领域的开发者来说,这些课程是非常有价值的。 PHP作为一款广泛用于服务器端开发的脚本...