用Hadoop搭建分布式存储和分布式运算集群

大数据--分布式存储 Hadoop HDFS(分布式文件系统):解决海量数据存储MAPREDUCE(分布式运算编程框架):解决海量数据计算YARN(作业调度和集群资源管理的框架):解决资源任务调度。 阅读详情

1. 列出使用的机器

普通PC,要求:
cpu: 750M-1G
mem: >128M
disk: >10G
不需要太昂贵的机器。

机器名:
finewine01
finewine02
finewine03

将finewine01设为主节点,其它的机器为从节点。

2. 下载和生成

从这里checkout,我选择trunk
http://svn.apache.org/repos/asf/lucene/hadoop/
使用ant进行生成

3. 部署前的准备工作
在主节点的start-all.sh脚本执行后,主节点和从节点的所有服务运行。即这个脚本将启动主节点的服务,并ssh到从所有的节点,继而启动从节点的服务。

start-all.sh这个脚本假定hadoop被安装在所有机器的同一个位置,每一台机器都用同一个路径存放hadoop的数据。

我们需要在每台机器上创建同样的目录结构。
/hadoop
/hadoop-install/hadoop-0.10.0 hadoop的0.10.0版的安装位置
/filesystem hadoop文件系统的根
/home 用户hadoop的主目录

以root登录到所有的机器,创建hadoop用户和目录结构。
ssh -l root finewine01
mkdir /hadoop
mkdir /hadoop/hadoop-install
mkdir /hadoop/filesystem
mkdir /hadoop/home
groupadd hadoop
useradd -d /hadoop/home -g hadoop hadoop
chown -R hadoop:hadoop /hadoop
passwd hadoop hadooppassword

start-all.sh脚本要启动所有机器的服务,需要对所有的机器进行ssh无密码的登录的能力。因此我们需要在每台机器上创建一个ssh key。在这个例子中,主节点也需要启动自己的服务,因此主节点同样需要做无密码的ssh登录设置。

用vi编辑/hadoop/hadoop-install/hadoop-0.10.0/conf/hadoop-env.sh,将下面的环境变量设置:

export HADOOP_HOME=/hadoop/hadoop-install/hadoop-0.10.0
export JAVA_HOME=/usr/java/jdk1.5.0_06
export HADOOP_LOG_DIR=${HADOOP_HOME}/logs
export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves

这个文件还有很多变量,这些变量的设定影响hadoop的运行。比如你以后执行脚本时发生ssh错误,就需要调整其中的HADOOP_SSH_OPTS变量。
同时需要注意的是,在初始的拷贝操作后,需要在设置hadoop-env.sh文件中的HADOOP_MASTER变量,这样程序才能通过rsync同步主节点的改变到所有的从节点上。

在主节点上创建ssh keys,然后复制到各个从节点上。这些操作必须由先前创建的hadoop用户完成。不要su成hadoop用户来做。开启一个新shell,以hadoop用户的身份登录来完成这些操作。
cd /hadoop/home
ssh-keygen -t rsa (Use empty responses for each prompt)
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /hadoop/home/.ssh/id_rsa.
Your public key has been saved in /hadoop/home/.ssh/id_rsa.pub.
The key fingerprint is:
a6:5c:c3:eb:18:94:0b:06:a1:a6:29:58:fa:80:0a:bc nutch@localhost

在主节点上,拷贝刚才创建的公共key到一个名为authorized_keys的文件:
cd /hadoop/home/.ssh
cp id_rsa.pub authorized_keys

只需在主节点上运行ssh-kegen程序。其他节点的目录结构创建后,将刚才在主节点创建的keys通过scp拷贝到从节点的同样的目录上。
scp /hadoop/home/.ssh/authorized_keys hadoop@finewine02:/hadoop/home/.ssh/authorized_keys
第一次,你需要输入hadoop用户的密码。第一次登录到其他的机器上,ssh提示你是否选择将机器加入到已知的机器列表中,选择yes。这个keys文件拷贝后,以hadoop的身份从主节点到从节点的登录就不需要密码了。
可以从主节点上以hadoop的身份测试:
ssh finewine02
接下来一个命令提示符将直接出现,不需要密码的。

一旦成功在所有机器上创建ssh keys后,就可以开始在从节点上部署hadoop。

4. 部署hadoop到一个机器上

首先,我们部署hadoop到一个节点上(主节点)。确保运行正常后,加入其他从节点。下面所有的操作都是由登录后的hadoop用户进行的。
cp -R /path/to/build/* /hadoop/hadoop-install/hadoop-x.x.x

然后确保这些shell脚本文件都是unix格式,并且是可执行的(这些文件分别在/bin和/conf目录中)。

一个hadoop-site.xml的例子:

fs.default.name
finewine01:9000

The name of the default file system. Either the literal string
“local” or a host:port for NDFS.

mapred.job.tracker
finewine01:9001

The host and port that the MapReduce job tracker runs at. If
“local”, then jobs are run in-process as a single map and
reduce task.

mapred.map.tasks
2

define mapred.map tasks to be number of slave hosts

mapred.reduce.tasks
2

define mapred.reduce tasks to be number of slave hosts

dfs.name.dir
/hadoop/filesystem/name
dfs.data.dir
/hadoop/filesystem/data
mapred.system.dir
/hadoop/filesystem/mapreduce/system
mapred.local.dir
/hadoop/filesystem/mapreduce/local
dfs.replication
1
fs.default.name // 缺省的文件系统 “local”或者”host:port”

hadoop包含两个组件,分别是分布式文件系统和mapreduce功能。分布式文件系统允许你在多台普通机器上存储和复制文件。mapreduce可以让你很容易就执行并行程序任务。

分布式文件系统包含名字节点和数据节点。当一个客户想操作一个在文件系统上的文件时,它首先和名字节点联系,名字节点将告诉它在那个数据节点上可以 取得文件。名字节点负责调度和保存那些数据块保存和复制到在那些机器上。数据节点是数据仓库,保存真实的文件数据块。当你在同一台机器上运行名字节点和数 据节点的服务时,它同样会通过sockets来通讯,如同在不同机器上一样。

mapreduce是一种分布式运算,就如分布式文件系统一样,只不过分布的一个运算操作,而不是文件。负责mapreduce调度服务器叫做 mapreduce job tracker。每一个执行运算操作的节点都有一个守护叫task tracker,task tracker运行并且和job tracker通信。

主节点和从节点的通信以连续的heartbeat(5-10秒)的方式进行。如果从节点的heartbeat停止,主节点将假定该从节点失效并不再使用该节点。

mapredu.job.traker // mapreduce的主节点,”local”或者”host:port”

mapred.map.tasks和mapred.reduce.tasks用于设定并行任务的数量。

dfs.name.dir // 名字节点用于存储数据节点的跟踪和调度信息

dfs.data.dir // 数据节点用于存储实际的数据块

mapred.system.dir // mapreduce tasker 存储自己的数据,仅仅在tasker所在的机器上,不在mapreduce主机上

mpred.local.dir // mapreduce 在节点上存储自己的本地数据。mapreduce使用巨大的本地空间来执行它的tasks。tasks退出时,mapreduce产生的中间文件并没有被删除。在每个节点上,这个属性是一样的。

dfs.replication // 冗余,单个文件将被拷贝到多少机器上。这个值不能高于的所有的数据节点的数量。否则守护启动时会看见很多错误信息。

在你启动hadoop服务之前,确保格式化名字节点

bin/hadoop namenode -format

现在可以启动hadoop服务了

bin/start-all.sh

停止hadoop服务可以使用下面的命令

bin/stop-all.sh

如果设置正确,会看到正常的输出信息

5. 部署Hadoop到多台机器上

一旦你在一台机器上成功运行hadoop,就可以将配置文件拷贝到其他的机器上。
如:
scp -r /hadoop/hadoop-install/hadoop-x.x.x hadoop@finewine02:/hadoop/hadoop-install/

对每台从节点机器都执行这个操作。然后编辑slaves文件,增加每一个slave到这个文件中,每行一个。编辑hadoop-site.xml的值,修改map和reduce的task的数量。修改replication属性。

6. 分布式搜索

产品系统一般每个索引库存100万条记录。50个服务器每秒处理20多个请求。
多处理器、多磁盘的系统,每个服务使用一个独立的磁盘和索引,这样机器的费用可以降低50%,电力解约到75%。一个多磁盘的机器并不能像单磁盘机器一样每秒处理那么多查询,但是它能处理更大的索引数量,因此平均起来效率更高一些。

7. 同步代码到从节点上

hadoop提供同步代码到从节点的能力。这个功能是可选的,因为它会减慢服务启动的速度,并且有时候你并不想同步改变到从节点上。

虽然从节点可以和主节点同步,但在第一次,你仍然需要基本的安装到从节点上,以至同步的脚本生效。这些工作上面我们在上面已经做了,所以不需要做改变。

同步的启动是由主节点ssh到从节点上,并执行bin/hadoop-daemon.sh脚本。这个脚本调用rsync来同步主节点。这表示你需要能以无密码的方式由从节点登录到主节点。前面,我们设置了从主节点到从节点的无密码登录,现在则设置反向登录。

如果是由于rsync选项引起了问题,查看bin/hadoop-daemon.sh脚本,大约在82行有rsync的选项。

那么,首先第一件事情就是在conf/hadoop-env.sh文件中,设置hadoop主节点变量。如:
export HADOOP_MASTER=finewine01:/hadoop/hadoop-install/hadoop-x.x.x

然后拷贝到所有从节点上,scp /hadoop/hadoop-installl/hadoop-x.x.x/conf/hadoop-env.sh hadoop@finewine02:/hadoop/hadoop-install/hadoop-x.x.x/hadoop-env.sh

最终,你需要登录到所有的从节点上,为每台机器创建一个ssh key。然后拷贝回到主节点,并追加到文件/hadoop/home/.ssh/authorized_keys文件中。在每个从节点上进行如下操作:

ssh -l nutch finewine02
cd /hadoop/home/.ssh

ssh-keygen -t rsa (Use empty responses for each prompt)
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /hadoop/home/.ssh/id_rsa.
Your public key has been saved in /hadoop/home/.ssh/id_rsa.pub.
The key fingerprint is:
a6:5c:c3:eb:18:94:0b:06:a1:a6:29:58:fa:80:0a:bc nutch@localhost

scp id_rsa.pub hadoop@finewine01:/hadoop/home/finewine02.pub

在每台从节点机器完成上面的操作后,追加所有的文件到主节点的authorized_keys文件。

cd /hadooop/home
cat finewine*.pub >> .ssh/authorized_keys

当这些操作完成后,每次运行bin/start-all.sh脚本,文件都会从主节点同步的每一个从节点。

8. 查看状况

端口 : 50070
dfs的状态

端口:50060
tracker状态

50030
map/reduce管理

其他端口:
dfs.secondary.info.port 50090
dfs.datanode.port 50010
dfs.info.port 50070
mapred.job.tracker.info.port 50030
mapred.task.tracker.report.port 50050
tasktracker.http.port 50060

 
七牛云文件上传、处理工具类 概述 项目需要,后台所有图片需要上传到七牛云。 以下是自己写的工具类 实现 /** * 七牛云工具类 */ public class QiNiuUtils { private Logger log = LoggerFactory.getLogger(QiNiuUtils.class); private static UploadManager uploadManager;... 阅读详情

相关推荐

Qt 文件名称处理工具类

创建一个文件名称处理工具类,可以帮助处理文件路径、扩展名、文件名等操作。以下是一个详细的Qt C++文件名称处理工具类的示例代码及其说明。

MusicScore的博客 180

Hadoop 分布式存储系统介绍

hadoop组成分布式存储(hdfs)hadoop1.x 存储系统hadoop 2.x 存储系统存储账本原理常用命令操作Java 代码实现配置文件获取对象创建文件夹上传文件下载文件递归列出文件夹中所有内容(包含子目录)参考文献。...

m0_67393828的博客 2707

全面掌握Java文件处理:文件读写工具类详解

htmltable {th, td {th {pre {简介:本文详细介绍了如何创建一个完整的Java文件读写工具类,涵盖了Java IO基础、File类的使用、文件读写操作的实现方法、工具类设计以及异常处理等多个方面。通过示例代码展示了如何在Java中高效地管理文件和目录,同时提供了该工具类的使用示例,帮助开发者在日常开发中简化文件操作流程。

weixin_35972981的博客 920

一文理解Hadoop分布式存储和计算框架入门基础

本篇从Hadoop发行版本历史开始,延伸至其生态说明,了解总体组成部分和架构,通过实战部署最新版本3.3.4实现3个节点集群,并配置NameNode和ResourceManager的HA,最后测试完成HDFS文件读写和Yarn任务资源调度。......

itxiaoshen博客 1961

【漆学军】MT4进阶到MT5速成之路(2)获取持仓

MT5在持仓获取上,要比MT4复杂些,分两部分,获取持仓和挂单采用了不同的方法。 一、获取持仓中的buy和sell单 int b=0;//获取buy单个数 int s=0;//获取sell单个数 double lot_total_buy=0;//获取持仓中buy单的总手数 double lot_total_sell=0;//获取持仓中sell单的总手数 for(int i=0; i<PositionsTotal(); i++) { ulong ticket=Positi

漆学军的编程笔记 1625

头歌 操作系统 课堂练习2.1:外部中断 第2关:第一次时钟中断

将答案0x796c输入到workspace/mushixun/恢复点的地址.txt中的括号里即可,随后使用kill命令防止对第三关的环境造成影响。

Yinfrey的博客 6085

Hadoop HDFS-分布式存储系统入门、配置、使用及架构原理分析

HDFS是Hadoop的底层分布式存储系统,是Hadoop分布式计算的底层基石,要使用Hadoop就必须学习HDFS的使用。本文介绍了为什么要使用HDFS、HDFS的基本使用、核心架构组成以及分布式可靠性保障机制。

BoringError的博客 4367

从Power到HO:一文搞懂主流脑图谱在DPABI里怎么选,让你的rs-fMRI分析更精准

本文深入解析了rs-fMRI分析中主流脑图谱(如Power、HO、AAL等)在DPABI中的科学选择策略,帮助研究者根据不同的神经科学研究目标优化分析流程。从解剖学图谱到功能连接图谱的特性对比,到DPABI实操中的多图谱分析工作流,提供了全面的方法论指导,助力提升静息态功能磁共振成像(rs-fMRI)研究的精准度和可重复性。

weixin_30654583的博客 403

基于Hadoop架构的分布式计算和存储技术及其应用

在硬盘存储容量快速增加的同时,访问速度,即数据从硬盘读取的速度未能快速提高.1990年,一个普通的硬盘驱动器可以存储1 370 MB的数据并拥有4.4 MB/s的传输速度,只需5 min就可以读取整个磁盘的数据。20年后的今天,海量数据的出现使得使用1TB存储容量的磁盘驱动器已很正常,由于数据传输速度在100 MB/s左右,需要花2.5 h以上才能读取整个驱动器的数据.如果可...

weixin_34302561的博客 1423

保姆级教程:STK 11.0 从下载到安装成功(附Matlab互联配置与常见问题解决)

本文提供STK 11.0的完整安装指南,包括下载、安装步骤、Matlab互联配置及常见问题解决方案。详细介绍了系统要求核查、分步安装流程、关键文件替换和许可证配置,确保用户能够顺利完成STK 11.0的部署并实现与Matlab的无缝对接。

weixin_30698297的博客 344

SBM与超效率SBM模型实战:从原始面板数据到MATLAB高效实现

本文详细介绍了SBM模型与超效率SBM模型的核心原理,并提供了从原始面板数据预处理到MATLAB高效实现的完整实战指南。通过具体代码解析,帮助研究者掌握如何利用MATLAB进行数据标准化、模型构建、效率求解及结果可视化,从而精准评估决策单元的相对效率,尤其适用于在高效单元中进一步精细排名的场景。

weixin_29100399的博客 478

文件(XML)解析处理工具类

import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.Field; import java.lang.reflect.I

qzlmhy的专栏 947

(一)Tushare Pro教程:股票基本数据接口

 一直使用tushare作数据源,这里开个教程大家一起学习。 一、介绍        tushare是一个python股票数据源,现已升级到tushare pro版本,新版本在数据稳定性和获取速率上大幅提升。与wind、东财等收费数据源相比,tushare pro算是金融数据界的良心之作,其为从事金融工程、量化研究等方向的同学们提供了便利。tushare pro还有一点突出的特色就是已经将股票...

虎毛的博客 4万+

文件处理工具类-来自若依

package com.ruoyi.common.utils.file; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncod.

pshdhx的博客 4539

SAPABAP金色传说:关于导入和导出Excel时反复弹窗提示 SAP GUI安全性问题的解决方法

文章目录前言一、提示的到底是什么?二、关闭SAP GUI安全提示的步骤1.设置位置 前言 如果你在SAP中,经常需要将数据导出Excel,或者使用Excel进行批导数据,那么你对下面这个频繁出现的弹窗提示一定不陌生! 系统试图创建文件 C:\Users\15265\Desktop\EXPORT.XLSX 于目录 C:\Users\15265\Desktop\ 是否要授权修改父目录及其所有子目录? 不管你是不是选的记住我的决定,它必出!就很烦!那如何处理才能关闭呢? 提示:以下是本篇文章正文内容,看完快

Easystudios博客 1万+

杰理外挂flash使用教程(三): 打包提示音到外部flash(2)

本教程详细介绍了提示音制作与程序配置的全流程规范。提示音制作要求包括:英文命名(8字符内)、单声道转换、标准目录结构(cpu/br23/tools/)及使用user_tone_g.bat脚本生成res.bin资源文件。程序配置需修改:1)启用NOR_FS文件系统;2)调整存储空间;3)配置外置Flash参数;4)增强下载脚本追加资源参数。测试阶段建议替换开机提示音验证功能,扩展开发可参考tone_player.c的索引播放逻辑。所有操作均配有图示说明,关键配置需修改对应头文件和脚本参数。

qq_42014563的博客 587

对于nc文件处理的工具类

对于nc文件处理的工具类 去发现同类优质开源项目:https://gitcode.com/ 简介 本仓库提供了针对nc(NetCDF)文件格式处理的工具类,旨在帮助用户轻松进行nc文件的读写、转换等操作。nc文件是一种用于存储和共享科学数据的常用格式,广泛应用于气象、地理信息系统等领域。 功能 本工具类主要包括以下功能: 读取nc文件:快速读取nc文件中的数据,支持多种数据类型。 写入nc文件:...

gitblog_06702的博客 438

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

探索数据处理的利器:nc文件处理工具类

探索数据处理的利器:nc文件处理工具类 去发现同类优质开源项目:https://gitcode.com/ 在科学数据领域,nc(NetCDF)文件格式是一种重要的数据存储方式,广泛应用于气象、地理信息系统等多个行业。今天,我们将介绍一款开源的nc文件处理工具类,帮助用户轻松实现nc文件的读写、转换等操作,提高数据处理效率。 项目介绍 nc文件处理工具类是一款针对nc文件格式的处理工具,为用户提供了...

gitblog_06735的博客 960

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java文件处理工具类(自制)

1:计算一个文件或者文件夹的大小,单位Byte,KB,或者MB,如果文件不存在返回-1 2:文件剪裁,把一个文件前面指定bytes或者KB,MB剪切掉(例子是歌曲剪切) 3:文件合并:把两个文件合并到一起(例子是歌曲合并) 4:文件复制 5:文件创建 6:文件删除 7:文件信息显示

越看越喜欢啊 962

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java工具类之文件处理类

【代码】java工具类之文件处理类。

优快云博客技术,java高级工程师,业务层架构师,高级管理认证,毕业设计可以联系我 333

压缩文件处理工具类

压缩文件处理工具类 import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io...

chenmu9888的博客 135

java文件处理工具类

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputS...

weixin_30235225的博客 214

Java 文件处理工具类FileUtils

【代码】Java 文件处理工具类FileUtils。

yyongsheng的博客 1192

FileUtil:文件处理工具类

一个文件处理的工具类(●’◡’●)public class FileUtil { private static final String TAG = "--FileUtil--"; public static final String separator = "/"; // ==================================================关于

秦时明月 2656

关于http请求、文件处理以及空间地理信息处理的工具类介绍

本篇主要是搜集了日常开发中比较常用的几个工具类,他们均以Java实现,包含了比较常用的方法。比如Java实现http常见的get和post请求,Java实现文件内容读写,Java实现处理空间地理信息数据,比如合并四维空间数据的处理等。...

lbq15735104044的博客 825

Zip文件读取处理工具类

在工作中,有4家上游,处理上游的文件又比较频繁,为了减少重复代码,因此写了个Zip文件 读取处理工具类 public static void readZipEntry(ZipFile zipFile, ZipEntry zipEntry, Consumer<String> consumer) { InputStream inputStream = null; BufferedReader br = null; String line = nu

zy1404的专栏 308
上一篇: MapReduce技术
下一篇: MapReduce 映射与化简算法
kevin_long
博客等级 码龄20年 30粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值