hadoop漫谈

本文介绍了Hadoop的概述及其分布式文件系统HDFS的工作原理,包括HDFS的节点构成和架构,并提供了在Ubuntu 11.10系统上进行伪分布式安装Hadoop 1.1.1版本的详细步骤,涵盖了Java环境配置、Hadoop配置文件修改、SSH免密码登录配置等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内容概要

一. hadoop简介

1. 概述
hadoop是apache下的一个开源项目,由java开发,具备高可用性,高可靠性,以及分布式计算的特性。hadoop的基础是HDFS分布式文件系统,它是建立在廉价PC的基础上的,因此对HDFS来说硬件的不可靠性是常事,如有机器宕机,磁盘损坏,都有可能造成数据的丢失。但是hadoop提供的HDFS提供的数据冗余机制,能够保障在机器宕机,磁盘损坏等情况下数据不丢失。hadoop之所以能够做到快速大大户据处理,全然依靠于HDFS这一可靠的分布式文件系统,Mapreduce就是建立在HDFS基础上的。在hadoop上数据处理视同过移动计算到对应的数据进行数据的处理和分析,减少数据的移动带来磁盘IO的时间开销,从而保障Mapreduce处理数据时的处理速度。Google的Mapreduce就是建立在GFS上的一个计算引擎,Google每天抓取海量的url做pagerank,需要采用Mapreduce这一计算引擎完成其对海量数据大处理和分析 。因此讨论hadoop就必须先要了解HDFS这一分布式文件系统
1.1 HDFS
1.1.1 节点构成
Namenode, Secondayrnamenode, Datanode, Jobtracker, Tasktracker
Namenode 提供整个namespace, metadata的管理,通过namenode可以获取到对应的文件的分片信息,文件大存取都需要用到namenode的metadata和namespace。它在HDFS中扮演着至关重要大角色,如果Namenode宕掉,需要及时恢复,在目前的架构中hadoop仍然存在单点故障(single point failure )
Secondarynamenode只与Namenode进行通信,其功能主要使用来将Namenode内的edits文件fsimage文件进行merge后,保存到Secondarynamenode本地,用以避免Namenode宕机后元数据丢失,使得文件丢失,同时也可以保证不让Namenode的edits文件过大。Secondarynamenode将merge后的文件会通过HTTP协议POST到Namenode对应的fs.name.dir目录下。
Datanode,从名字便可以看出,它是用来存储数据,Datanode与Namenode之间通过RPC通信,由Namenode来管理数据的存放
Jobtracker用于接受Mapreduce任务,调度任务
Tasktracker用于分析数据的节点,其与Datanode在同一机器上,Tasktracker通过“拉客”的方式,告诉Jobtracker自己可以接受任务,如数据在该Datanode上,则避免数据的移动,直接可以通过读写本地磁盘上的数据完成数据的分析和处理。下面看其具体的架构
1.1.2 架构


二. hadoop安装

2.1 安装环境及条件(伪分布式安装)
操作系统ubuntu 11.10, hadoop-1.1.1, JDK1.7
2.2 安装步骤
2.2.1 安装java
下载JDK,解压缩后放置在cc@ubuntu:~/software/jdk1.7.0_07目录下,配置java环境变量,边界/etc/profile,在其后添加上如下内容
JAVA_HOME=/home/cc/software/jdk1.7.0_07
CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME CLASSPATH PATH
然后source /etc/profile使环境变量生效
2.2.2 安装hadoop-1.1.1
下载hadoop-1.1.1解压hadoop到目录cc@ubuntu:~/software/hadoop-1.1.1$
配置文件在cc@ubuntu:~/software/hadoop-1.1.1/conf$目录下,需要修改的配置文件有core-site.xml, mapred-site.xml, hdfs-site.xml, hadoop-env.sh,(伪分布式模式下无需修改masters和slaves文件,均为localhost即可)
各配置文件添加的内容分别如下:
core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/cc/data/tmp</value>
</property>
</configuration>

hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/cc/data/namedir</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/cc/data/datadir</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9090</value>
</property>
</configuration>

hadoop-env.sh
export JAVA_HOME=/home/cc/software/jdk1.7.0_07
export HADOOP_LOG_DIR=/home/cc/data/logs
export HADOOP_PID_DIR=/home/cc/data/pids
2.2.3 配置ssh免密码登录
cc@ubuntu:~$ mkdir .ssh
cc@ubuntu:~$ cd .ssh/
cc@ubuntu:~/.ssh$ 
cc@ubuntu:~/.ssh$ ssh-keygen -t rsa
cc@ubuntu:~/.ssh$ cat id_rsa.pub > authorized_keys
此时ssh localhost可以直接登录成功,如果没有成功,且报此错误agent admitted failure to sign using the key,则可直接运行ssh-add解决此问题
2.3. 运行hadoop
2.3.1 启动hadoop
  1. 格式化hadoop,cc@ubuntu:~/software/hadoop-1.1.1$ bin/hadoop namenode -format
  2. 启动集群,cc@ubuntu:~/software/hadoop-1.1.1$ bin/start-all.sh 
2.3.2 测试hadoop是否可用
1.检验进程是否存在
cc@ubuntu:~/software/hadoop-1.1.1$ jps
9275 NameNode
10058 TaskTracker
9518 DataNode
9739 SecondaryNameNode
9821 JobTracker
13483 Jps
2.向hdfs存放文件
cc@ubuntu:~/software/hadoop-1.1.1$ bin/hadoop fs -mkdir test
cc@ubuntu:~/software/hadoop-1.1.1$ bin/hadoop fs -put README.txt test
cc@ubuntu:~/software/hadoop-1.1.1$ bin/hadoop fs -ls test
Found 1 items
-rw-r--r--   1 cc supergroup       1366 2013-01-26 00:24 /user/cc/test/README.txt
cc@ubuntu:~/software/hadoop-1.1.1$ 
3.执行mapreduce程序
cc@ubuntu:~/software/hadoop-1.1.1$ bin/hadoop jar hadoop-examples-1.1.1.jar pi 1 4
Number of Maps  = 1
Samples per Map = 4
Wrote input for Map #0
Starting Job
13/01/26 00:26:04 INFO mapred.FileInputFormat: Total input paths to process : 1
13/01/26 00:26:05 INFO mapred.JobClient: Running job: job_201301252155_0001
13/01/26 00:26:06 INFO mapred.JobClient:  map 0% reduce 0%
13/01/26 00:26:13 INFO mapred.JobClient:  map 100% reduce 0%
13/01/26 00:26:21 INFO mapred.JobClient:  map 100% reduce 33%
13/01/26 00:26:23 INFO mapred.JobClient:  map 100% reduce 100%
13/01/26 00:26:24 INFO mapred.JobClient: Job complete: job_201301252155_0001
13/01/26 00:26:24 INFO mapred.JobClient: Counters: 30
13/01/26 00:26:24 INFO mapred.JobClient:   Job Counters 
13/01/26 00:26:24 INFO mapred.JobClient:     Launched reduce tasks=1
13/01/26 00:26:24 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=6649
13/01/26 00:26:24 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
13/01/26 00:26:24 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
13/01/26 00:26:24 INFO mapred.JobClient:     Launched map tasks=1
13/01/26 00:26:24 INFO mapred.JobClient:     Data-local map tasks=1
13/01/26 00:26:24 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=9398
13/01/26 00:26:24 INFO mapred.JobClient:   File Input Format Counters 
13/01/26 00:26:24 INFO mapred.JobClient:     Bytes Read=118
13/01/26 00:26:24 INFO mapred.JobClient:   File Output Format Counters 
13/01/26 00:26:24 INFO mapred.JobClient:     Bytes Written=97
13/01/26 00:26:24 INFO mapred.JobClient:   FileSystemCounters
13/01/26 00:26:24 INFO mapred.JobClient:     FILE_BYTES_READ=28
13/01/26 00:26:24 INFO mapred.JobClient:     HDFS_BYTES_READ=237
13/01/26 00:26:24 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=47877
13/01/26 00:26:24 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=215
13/01/26 00:26:24 INFO mapred.JobClient:   Map-Reduce Framework
13/01/26 00:26:24 INFO mapred.JobClient:     Map output materialized bytes=28
13/01/26 00:26:24 INFO mapred.JobClient:     Map input records=1
13/01/26 00:26:24 INFO mapred.JobClient:     Reduce shuffle bytes=28
13/01/26 00:26:24 INFO mapred.JobClient:     Spilled Records=4
13/01/26 00:26:24 INFO mapred.JobClient:     Map output bytes=18
13/01/26 00:26:24 INFO mapred.JobClient:     Total committed heap usage (bytes)=196018176
13/01/26 00:26:24 INFO mapred.JobClient:     CPU time spent (ms)=1900
13/01/26 00:26:24 INFO mapred.JobClient:     Map input bytes=24
13/01/26 00:26:24 INFO mapred.JobClient:     SPLIT_RAW_BYTES=119
13/01/26 00:26:24 INFO mapred.JobClient:     Combine input records=0
13/01/26 00:26:24 INFO mapred.JobClient:     Reduce input records=2
13/01/26 00:26:24 INFO mapred.JobClient:     Reduce input groups=2
13/01/26 00:26:24 INFO mapred.JobClient:     Combine output records=0
13/01/26 00:26:24 INFO mapred.JobClient:     Physical memory (bytes) snapshot=167493632
13/01/26 00:26:24 INFO mapred.JobClient:     Reduce output records=0
13/01/26 00:26:24 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=780718080
13/01/26 00:26:24 INFO mapred.JobClient:     Map output records=2
Job Finished in 20.375 seconds
Estimated value of Pi is 4.00000000000000000000

hadoop streaming数据处理

hadoop java api数据处理

标题基于SpringBoot+Vue的学生交流互助平台研究AI更换标题第1章引言介绍学生交流互助平台的研究背景、意义、现状、方法与创新点。1.1研究背景与意义分析学生交流互助平台在当前教育环境下的需求及其重要性。1.2国内外研究现状综述国内外在学生交流互助平台方面的研究进展与实践应用。1.3研究方法与创新点概述本研究采用的方法论、技术路线及预期的创新成果。第2章相关理论阐述SpringBoot与Vue框架的理论基础及在学生交流互助平台中的应用。2.1SpringBoot框架概述介绍SpringBoot框架的核心思想、特点及优势。2.2Vue框架概述阐述Vue框架的基本原理、组件化开发思想及与前端的交互机制。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue在学生交流互助平台中的整合方式及优势。第3章平台需求分析深入分析学生交流互助平台的功能需求、非功能需求及用户体验要求。3.1功能需求分析详细阐述平台的各项功能需求,如用户管理、信息交流、互助学习等。3.2非功能需求分析对平台的性能、安全性、可扩展性等非功能需求进行分析。3.3用户体验要求从用户角度出发,提出平台在易用性、美观性等方面的要求。第4章平台设计与实现具体描述学生交流互助平台的架构设计、功能实现及前后端交互细节。4.1平台架构设计给出平台的整体架构设计,包括前后端分离、微服务架构等思想的应用。4.2功能模块实现详细阐述各个功能模块的实现过程,如用户登录注册、信息发布与查看、在线交流等。4.3前后端交互细节介绍前后端数据交互的方式、接口设计及数据传输过程中的安全问题。第5章平台测试与优化对平台进行全面的测试,发现并解决潜在问题,同时进行优化以提高性能。5.1测试环境与方案介绍测试环境的搭建及所采用的测试方案,包括单元测试、集成测试等。5.2测试结果分析对测试结果进行详细分析,找出问题的根源并
内容概要:本文详细介绍了一个基于灰狼优化算法(GWO)优化的卷积双向长短期记忆神经网络(CNN-BiLSTM)融合注意力机制的多变量多步时间序列预测项目。该项目旨在解决传统时序预测方法难以捕捉非线性、复杂时序依赖关系的问题,通过融合CNN的空间特征提取、BiLSTM的时序建模能力及注意力机制的动态权重调节能力,实现对多变量多步时间序列的精准预测。项目不仅涵盖了数据预处理、模型构建与训练、性能评估,还包括了GUI界面的设计与实现。此外,文章还讨论了模型的部署、应用领域及其未来改进方向。 适合人群:具备一定编程基础,特别是对深度学习、时间序列预测及优化算法有一定了解的研发人员和数据科学家。 使用场景及目标:①用于智能电网负荷预测、金融市场多资产价格预测、环境气象多参数预报、智能制造设备状态监测与预测维护、交通流量预测与智慧交通管理、医疗健康多指标预测等领域;②提升多变量多步时间序列预测精度,优化资源调度和风险管控;③实现自动化超参数优化,降低人工调参成本,提高模型训练效率;④增强模型对复杂时序数据特征的学习能力,促进智能决策支持应用。 阅读建议:此资源不仅提供了详细的代码实现和模型架构解析,还深入探讨了模型优化和实际应用中的挑战与解决方案。因此,在学习过程中,建议结合理论与实践,逐步理解各个模块的功能和实现细节,并尝试在自己的项目中应用这些技术和方法。同时,注意数据预处理的重要性,合理设置模型参数与网络结构,控制多步预测误差传播,防范过拟合,规划计算资源与训练时间,关注模型的可解释性和透明度,以及持续更新与迭代模型,以适应数据分布的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值