大数据分布式计算--hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop 核心项目提供了在低端硬件上构建云计算环境的基础服务,它也提供了运行在这个云中的软件所必须的 API 接口。

Hadoop 内核的两个基本部分是 MapReduce 框架,也就是云计算环境,和 HDFS分布式文件系统 。在 Hadoop 核心框架中,MapReduce 常被称为 mapred,HDFS 经常被称为 dfs。。HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算。

MapReduce 的核心概念是把输入的数据分成不同的逻辑块, Map 任务首先并行的对每一块进行单独的处理。这些逻辑块的处理结果会被重新组合成不同的排序的集合,这些集合最后由 Reduce 任务进行处理。

HDFS分布式文件系统有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

参考:hadoop.appache.org

实验环境rhel6.5

主机server7,从机server8.server9  注:各机都必须域名相互解析。

安装及基本配置

各机创建uid为900 的hadoop用户,密码为redhat

Server7上,hadoop用户在/home/下。

#tar zxf hadoop-1.2.1.tar.gz -C hadoop

#cd hadoop

#ln -s hadoop-1.2.1/ hadoop

#sh jdk-6u32-linux-x64.bin    //安装java

#ln -s jdk-1.6.32 java

#vim .bash_profile    //配置path

export JAVA_HOME=/home/hadoop/java

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

#source .bash_profile

#echo $JAVA_HOME

显示/home/hadoop/java

#cd hadoop/conf

#vim hadoop-env.sh

修改exprot JAVA_HOME=/home/hadoop/java

#mkdir ../input

#cp *.xml ../input     //创建分布式文件系统

#cd ..

#bin/hadoop jar hadoop-examples-1.2.1.jar

列出了hadoop-example-1.2.1jar对input操作的相关参数,如grep查找,sort排序,wordcount计数等。

#bin/hadoop jar hadoop-examples-1.2.1.jar grep input output ‘dfs[a-z.]+‘   //查找inout中文件名开头为dfs后面为小写英文的文件,将结果存入自动生成的output文件夹中

#cd output/

#ls

#cat *

再介绍下hadoop的三种工作模式

单机模式(standalone)

单机模式是Hadoop的默认模式,当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置。在这种默认模式下所有3个XML文件均为空。当配置文件为空时,Hadoop会完全运行在本地。因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。

伪分布模式(Pseudo-Distributed Mode)

伪分布模式在“单节点集群”上运行Hadoop,其中所有的守护进程都运行在同一台机器上。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。

完全分布式模式

Hadoop守护进程运行在一个集群上。

上面的操作为单机模式。

Hadoop分布式部署

结构:

主节点包括名称节点(namenode)、从属名称节点(secondarynamenode)和 jobtracker 守护进程(即所谓的主守护进程)以及管理集群所用的实用程序和浏览器。

从节点包括 tasktracker 和数据节点(从属守护进程)。两种设置的不同之处在于,主节点包括提供 Hadoop 集群管理和协调的守护进程,而从节点包括实现Hadoop 文件系统(HDFS )存储功能和 MapReduce 功能(数据处理功能)的守护进程。

每个守护进程在 Hadoop 框架中的作用:

namenode 是 Hadoop 中的主服务器,它管理文件系统名称空间和对集群中存储的文件的访问。

secondary namenode ,它不是namenode 的冗余守护进程,而是提供周期检查点和清理任务。

在每个 Hadoop 集群中可以找到一个 namenode 和一个 secondary namenode。

datanode 管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个 datanode 守护进程。

每个集群有一个 jobtracker ,它负责调度 datanode 上的工作。

每个 datanode 有一个tasktracker,它们执行实际工作。

jobtracker 和 tasktracker 采用主-从形式,jobtracker 调度datanode 分发工作,而 tasktracker 执行任务。jobtracker 还检查请求的工作,如果一个datanode 由于某种原因失败,jobtracker 会重新调度以前的任务。

下面实现伪分布式

为了方便,进行ssh免密码设置。

Server7上hadoop用户。

#ssh-keygen

#ssh-copy-id localhost

#ssh localhost     //免密码登陆本机

修改配置文件:

#cd hadoop/conf

#vim core-site.xml

在<configuration>下面添加

<property>

<name>fs.default.name</name>

<value>hdfs://172.25.0.7:9000</value>

</property>                //指定namenode

#vim mapred-site.xml

在<configuration>下面添加

<property>

<name>mapred.job.tracker</name>

<value>172.25.0.7:9001</value>

</property>            //指定 jobtracker

#vim hdfs-site.xml

在<configuration>下面添加

<property>

<name>dfs.replication</name>

<value>1</value>

</property>    //指定文件保存的副本数,由于是伪分布式所以副本就是本机1个。

#cd ..

#bin/hadoop namenode -format      //格式化namenode

#bin/start-dfs.sh             //启动hdfs

#jps    //查看进程

可看到secondarynamenode,namenode,datanode都以启动。Namenode与datanode在同一台机器上,所以是伪分布式。

#bin/start-mapred.sh.sh        //启动mapreduce

#bin/hadoop fs -put input test     //上传input到hdfs并在hdfs中更名为test

浏览 NameNode 和 JobTracker 的网络接口,它们的地址默认为:

NameNode – http://172.25.0.7:50070/

JobTracker – http://172.25.0.7:50030/

查看namenode

#bin/hadoop fs -ls test          //列出hdfs中test目录下的文件

Web上查看test下的文件

下面实现完全分布式模式

主从机上都安装nfs-utils并启动rpcbind服务(主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解rpc就是一个中介服务),从机通过nfs直接使用hadoop免去安装配置。

在server7上,启动nfs服务

#vim /etc/exports

/home/hadoop  *(rw,all_squash,anonuid=900,anongid=900

//共享hadoop,对登陆用户指定id,用户以uid为900的用户登陆

server8,9上

#mount 172.25.0.7:/home/hadoop /hooem/hadoop/      //挂载共享目录

server7上,hadoop用户,更改hadoop/conf下的hdfs-site,将副本数由1改为2。

#cd  hadoop/conf

#vim slave  添加从机

172.25.0.8

172.25.0.9

#vim master  设置主机

172.25.0.7

启动完全分布式模式前要格式化伪分布式文件系统

#cd ..

#bin/stop-all.sh     //停止jobtracker,namenode,secondarynamenode

#bin/hadoop-daemon.sh stop tasktracker

#bin/hadoop-daemon.sh stop datanode     //停止tasktracker,datanode,

#bin/hadoop namenode -format

#bin/start-dfs.sh    显示server8,server9连接。

#bin/start-mapred.sh

新增了jobtracker进程

server8上,jps可看到三个进程jps,datanode,tasktracker

从机可以上传,查询等

#bin/hadoop fs -put input test

#bin/hadoop jar hadoop-example-1.2.1.jar grep test out ‘dfs[a-z]+’

server7上,

#bin/hadoop dfsadmin -report   //显示hdfs信息

由于hadoop下未增加文件,所以dfs used%均为0%

#dd if=/dev/zero of=bigfile bs=1M count=200

#bin/hadoop fs -put bigfile test

在web上看到dfs used为403.33MB(两从机,每个为200MB)

注:有时候操作错误导致hadoop进入安全模式,无法进行上传等操作

只需运行下行指令即可

#bin/hadoop dfsadmin -safemode leave

hadoop支持实时扩展,可在线添加从机。

新增从机server10。安装nfs-utils,启动rpcbind服务。添加uid900的hadoop用户,挂载server7的hadoop并在hadoop/conf下的slaves添加172.25.0.10。

注:必须在添加server10之前在主从机上添加server10的hostname解析。

server10上,hadoop用户

#bin/hadoop-daemon.sh start datanode

#bin/hadoop-daemon.sh start tasktracker

server7上,

#bin/hadoop dfsadmin -report

可看到server10的信息

可看到server10 dfs used为0,可以将server9的数据移到server10中。

数据迁移:

数据迁移是将很少使用或不用的文件移到辅助存储系统的过程。

hadoop 在线删除 server9 datanode 节点可实现数据迁移:

#bin/hadoop-daemon.sh stop tasktracker  //在做数据迁移时,此节点不要参与 tasktracker,否则会出现异常

在 master 上修改 conf/mapred-site.xml

在</property>下面添加

<property>

<name>dfs.hosts.exclude</name>

<value>/home/hadoop/hadoop-1.0.4/conf/datanode-excludes</value>

</property>

在conf下创建datanode-excludes,添加需要删除的主机,一行一个

#vim datanode-excludes

172.25.0.9   //删除节点server9

#cd ..

#bin/hadoop dfsadmin -refreshNodes    //在线刷新节点

#bin/hadoop dfsadmin -report

可看到server9 状态:Decommission in progress,

若要在线删除tasktracker节点

在server7上修改 conf/mapred-site.xml

<property>

<name>mapred.hosts.exclude</name>

<value>/home/hadoop/hadoop-1.0.4/conf/tasktracker-excludes</value></property>

创建 tasktracker-excludes 文件,并添加需要删除的主机名,一行一个

server9.example.com

#bin/hadoop mradmin -refreshNodes

等此节点的状态显示为 Decommissioned,数据迁移完成,可以安全关闭了。

hadoop1.2.1版本过低,jobtracker的调度能力不强,当slvers过多时容易成为瓶颈。使用新版本2.6.4是个不错的选择。

停掉进程,删除文件:

server7上

#bin/stop-all.sh

#cd /home/hadoop

#rm -fr hadoop java hadoop-1.2.1 java1.6.32

#rm -fr /tmp/*

从机上

#bin/hadoop-daemon.sh stop datanode

#bin/hadoop-daemon.sh stop tasktracker

#rm -fr /tmp/*

下面操作与上面基本相同

server7上,/home/hadoop/下hadoop用户

#tar zxf jdk-7u79-linux-x64.tar.gz -C /home/hadoop/

#ln -s jdk1.7.0.79 java

#tar zxf hadoop-2.6.4.tar.gz

#ln -s hadoop-2.6.4 hadoop

#cd hadoop/etc/hadoop

#vim hadoop-env.sh

export JAVA_HOME=/home/hadoop/java

export HADOOP_PREFIX=/home/hadoop/hadoop

#cd /home/hadoop/hadoop

#mkdir input

#cp etc/hadoop/*.xml input

#bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar grep input output ‘dfs[a-z.]+’

#cat output/*

grep编译时会有warning,当集群大时可能会出现问题。需要添加hadoop-native。

#tar -xf hadoop-native-64.2.6.0.tar -C hadoop/lib/native/

#bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar grep input output ‘dfs[a-z.]+’

再编译没有warning

#cd etc/hadoop

#vim slaves

172.25.0.8

172.25.0.9

#vim etc/hadoop/core-site.xml

<property>

<name>fs.defaultFS</name>

<value>hdfs://172.25.0.7:9000</value>

</property>

#vim hdfs-site.xml

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

#bin/hdfs namenode -format

#sbin/start-dfs.sh

#jps

#ps -ax 可看到namenode与secondarynamenode进程

#bin/hdfs dfs -mkdir /user/hadoop

#bin/hdfs dfs -put input/ test

web上可看到input以上传。

MapReduce 的 JobTracker/TaskTracker 机制需要大规模的调整来修复它在可扩展性,内存消耗,线程模型,可靠性和性能上的缺陷

为从根本上解决旧 MapReduce 框架的性能瓶颈,促进 Hadoop 框架的更长远发展,从 0.23.0 版本开始,Hadoop 的 MapReduce 框架完全重构,发生了根本的变化。新的 Hadoop MapReduce 框架命名为 MapReduceV2 或者叫 Yarn

#vim etc/hadoop/yarn-site.xml

< property>

<name>yarn.resourcemanager.hostname</name>

<value>server7.example.com</value>

</property>

#sbin/start-yarn.sh

#jps

server8可看到进程已启动

时间: 2024-08-27 17:20:55

大数据分布式计算--hadoop的相关文章

细细品味大数据--初识hadoop

初识hadoop 前言 之前在学校的时候一直就想学习大数据方面的技术,包括hadoop和机器学习啊什么的,但是归根结底就是因为自己太懒了,导致没有坚持多长时间,加上一直为offer做准备,所以当时重心放在C++上面了(虽然C++也没怎么学),计划在大四下有空余时间再来慢慢学习.现在实习了,需要这方面的知识,这对于我来说,除去校招时候投递C++职位有少许影响之外,无疑是有很多的好处. 所以,接下来的很长日子,我学习C++之外的很多时间都必须要花在大数据上面了. 那么首先呢,先来认识一下这处理大数据

大数据云计算高级实战Hadoop,Flink,Spark,Kafka,Storm,Docker高级技术大数据和Hadoop技能

大数据和Hadoop技能可能意味着有你的梦想事业和被遗忘之间的差异.骰子引用:“技术专业人员应该志愿参与大数据项目,这使他们对目前的雇主更有价值,对其他雇主更有销路.” 1.与Hadoop的职业:根据福布斯2015年的一份报告,约有90%的全球性组织报告了中高级别的大数据分析投资,约三分之一的投资者称其投资“非常重要”.最重要的是,约三分之二的受访者表示,数据和分析计划对收入产生了重大的可衡量的影响. Hadoop技能是需求的 - 这是不可否认的事实!因此,IT专业人士迫切需要使用 Hadoop

大数据和Hadoop什么关系?为什么大数据要学习Hadoop?

大数据是一系列技术的统称,经过多年的发展,大数据已经形成了从数据采集.整理.传输.存储.安全.分析.呈现和应用等一系列环节,这些环节涉及到诸多大数据工作岗位,这些工作岗位与物联网.云计算也都有密切的联系. Hadoop是一个由Apache基金会所开发的分布式系统基础架构,是用Java语言开发的一个开源分布式计算平台,适合大数据的分布式存储和计算平台. 广义上讲,大数据是时代发展和技术进步的产物.Hadoop只是一种处理大数据的技术手段. Hadoop是目前被广泛使用的大数据平台,本身就是大数据平

[转]20分钟看懂大数据分布式计算

这是一篇科普性质的文章,希望能过用一个通俗易懂的例子给非计算机专业背景的朋友讲清楚大数据分布式计算技术.大数据技术虽然包含存储.计算和分析等一系列庞杂的技术,但分布式计算一直是其核心,想要了解大数据技术,不妨从MapReduce分布式计算模型开始.该理论模型并不是什么新理念,早在2004年就被Google发布,经过十多年的发展,俨然已经成为了当前大数据生态的基石,可谓大数据技术之道,在于MapReduce. 传统计算技术 在进入到分布式计算技术这个概念之前,我们要先回顾一下传统计算技术,为了使计

洞悉大数据:Hadoop和云分析七大误解

七大误解:大数据与hadoop 对于Hadoop技术而言,可以说是开源领域的传奇,然而如今业界还伴随着一些流言,这些流言可能会导致IT高管们带着“有色”的观点去制定策略. 从IDC分析师报告中2013年数据存储上的增长速度将达到53.4%,AT&T更是声称无线数据的流量在过去的5年内增长200倍,从互联网内容.电子邮件.应用通知.社交消息以及每天接收的消息都在显着的增长,这也是众多大企业都聚焦大数据的原因所在. 毫无疑问,Hadoop成为解决大数据需求的主要投资领域之一,而类似Facebook等

大数据测试之hadoop命令大全

大数据测试之hadoop命令大全 1.列出所有Hadoop Shell支持的命令  $ bin/hadoop fs -help2.显示关于某个命令的详细信息  $ bin/hadoop fs -help command-name3.用户可使用以下命令在指定路径下查看历史日志汇总  $ bin/hadoop job -history output-dir这条命令会显示作业的细节信息,失败和终止的任务细节.4.关于作业的更多细节,比如成功的任务,以及对每个任务的所做的尝试次数等可以用下面的命令查看 

大数据之hadoop,国内首部:Zookeeper从入门到精通课程分享

对这个课程感兴趣的朋友可以加我QQ2059055336和我联系. ZooKeeper是Hadoop的开源子项目(Google Chubby的开源实现),它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.命名服务.分布式同步.组服务等. Zookeeper的Fast Fail 和 Leader选举特性大大增强了分布式集群的稳定和健壮性,并且解决了Master/Slave模式的单点故障重大隐患,这是越来越多的分布式产品如HBase.Storm(流计算).S4(流计算)等强依赖Zoo

大数据:Hadoop入门

大数据:Hadoop入门 一:什么是大数据 什么是大数据: (1.)大数据是指在一定时间内无法用常规软件对其内容进行抓取,管理和处理的数据集合,简而言之就是数据量非常大,大到无法用常规工具进行处理,如关系型数据库,数据仓库等.这里“大”是一个什么量级呢?如在阿里巴巴每天处理数据达到20PB(即20971520GB). 2.大数据的特点: (1.)体量巨大.按目前的发展趋势来看,大数据的体量已经到达PB级甚至EB级. (2.)大数据的数据类型多样,以非结构化数据为主,如网络杂志,音频,视屏,图片,

大数据平台Hadoop的分布式集群环境搭建

1 概述 本文章介绍大数据平台Hadoop的分布式环境搭建.以下为Hadoop节点的部署图,将NameNode部署在master1,SecondaryNameNode部署在master2,slave1.slave2.slave3中分别部署一个DataNode节点 NN=NameNode(名称节点) SND=SecondaryNameNode(NameNode的辅助节点) DN=DataNode(数据节点)2 前期准备 (1)准备五台服务器 如:master1.master2.slave1.sla