当前位置:首页 > 教育综合 > 正文

hadoop要怎样简易说明?

请简要描述一下hadoop,spark,mpi三种计算框架的特点以及分别适用于什么样的场景

Spark已经取代Hadoop成为最活跃的开源大数据项目,但是,在选择大数据框架时,企业不能因此就厚此薄彼 近日,著名大数据专家Bernard Marr在一篇文章中分析了Spark和 Hadoop 的异同 Hadoop和Spark均是大数据框架,都提供了一些执行常见大数据任务的工具,但确切地说,它们所执行的任务并不相同,彼此也并不排斥 虽然在特定的情况下,Spark据称要比Hadoop快100倍,但它本身没有一个分布式存储系统 而分布式存储是如今许多大数据项目的基础,它可以将 PB 级的数据集存储在几乎无限数量的普通计算机的硬盘上,并提供了良好的可扩展性,只需要随着数据集的增大增加硬盘 因此,

安装hadoop的步骤有哪些

hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFSHA、YARN等。最新的hadoop-2.4.1又增加了YARNHA
注意:apache提供的hadoop-2.4.1的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,
所以如果在64位的操作上安装hadoop-2.4.1就需要重新在64操作系统上重新编译
(建议第一次安装用32位的系统,我将编译好的64位的也上传到群共享里了,如果有兴趣的可以自己编译一下)
前期准备就不详细说了,课堂上都介绍了
1.修改Linux主机名
2.修改IP
3.修改主机名和IP的映射关系
######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机、阿里云主机等)
/etc/hosts里面要配置的是内网IP地址和主机名的映射关系
4.关闭防火墙
5.ssh免登陆
6.安装JDK,配置环境变量等
集群规划:
主机名 IP 安装的软件 运行的进程
HA181 192.168.1.181 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
HA182 192.168.1.182 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
HA183 192.168.1.183 jdk、hadoop ResourceManager
HA184 192.168.1.184 jdk、hadoop ResourceManager
HA185 192.168.1.185 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
HA186 192.168.1.186 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
HA187 192.168.1.187 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

说明:
1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。ActiveNameNode对外提供服务,而StandbyNameNode则不对外提供服务,仅同步activenamenode的状态,以便能够在它失败时快速进行切换。
hadoop2.0官方提供了两种HDFSHA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode
这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当ActiveNameNode挂掉了,会自动切换StandbyNameNode为standby状态
2.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调
安装步骤:
1.安装配置zooekeeper集群(在HA185上)
1.1解压
tar-zxvfzookeeper-3.4.5.tar.gz-C/app/
1.2修改配置
cd/app/zookeeper-3.4.5/conf/
cpzoo_sample.cfgzoo.cfg
vimzoo.cfg
修改:dataDir=/app/zookeeper-3.4.5/tmp
在最后添加:
server.1=HA185:2888:3888
server.2=HA186:2888:3888
server.3=HA187:2888:3888
保存退出
然后创建一个tmp文件夹
mkdir/app/zookeeper-3.4.5/tmp
再创建一个空文件
touch/app/zookeeper-3.4.5/tmp/myid
最后向该文件写入ID
echo1>/app/zookeeper-3.4.5/tmp/myid
1.3将配置好的zookeeper拷贝到其他节点(首先分别在HA186、HA187根目录下创建一个weekend目录:mkdir/weekend)
scp-r/app/zookeeper-3.4.5/HA186:/app/
scp-r/app/zookeeper-3.4.5/HA187:/app/

注意:修改HA186、HA187对应/weekend/zookeeper-3.4.5/tmp/myid内容
HA186:
echo2>/app/zookeeper-3.4.5/tmp/myid
HA187:
echo3>/app/zookeeper-3.4.5/tmp/myid

2.安装配置hadoop集群(在HA181上操作)
2.1解压
tar-zxvfhadoop-2.4.1.tar.gz-C/weekend/
2.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目录下)
#将hadoop添加到环境变量中
vim/etc/profile
exportJAVA_HOME=/app/jdk1.7.0_79
exportHADOOP_HOME=/app/hadoop-2.4.1
exportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

#hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下
cd/home/hadoop/app/hadoop-2.4.1/etc/hadoop

2.2.1修改hadoop-env.sh
exportJAVA_HOME=/app/jdk1.7.0_79

2.2.2修改core-site.xml



fs.defaultFS
hdfs://ns1/



hadoop.tmp.dir
/app/hadoop-2.4.1/tmp




ha.zookeeper.quorum
HA185:2181,HA186:2181,HA187:2181



2.2.3修改hdfs-site.xml



dfs.nameservices
ns1



dfs.ha.namenodes.ns1
nn1,nn2



dfs.namenode.rpc-address.ns1.nn1
HA181:9000



dfs.namenode.http-address.ns1.nn1
HA181:50070



dfs.namenode.rpc-address.ns1.nn2
HA182:9000



dfs.namenode.http-address.ns1.nn2
HA182:50070



dfs.namenode.shared.edits.dir
qjournal://HA185:8485;HA186:8485;HA187:8485/ns1



dfs.journalnode.edits.dir
/app/hadoop-2.4.1/journaldata



dfs.ha.automatic-failover.enabled
true



dfs.client.failover.proxy.provider.ns1
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider



dfs.ha.fencing.methods

sshfence
shell(/bin/true)




dfs.ha.fencing.ssh.private-key-files
/home/hadoop/.ssh/id_rsa



dfs.ha.fencing.ssh.connect-timeout
30000



2.2.4修改mapred-site.xml



mapreduce.framework.name
yarn



2.2.5修改yarn-site.xml



yarn.resourcemanager.ha.enabled
true



yarn.resourcemanager.cluster-id
yrc



yarn.resourcemanager.ha.rm-ids
rm1,rm2



yarn.resourcemanager.hostname.rm1
HA183


yarn.resourcemanager.hostname.rm2
HA184



yarn.resourcemanager.zk-address
HA185:2181,HA186:2181,HA187:2181


yarn.nodemanager.aux-services
mapreduce_shuffle




2.2.6修改slaves(slaves是指定子节点的位置,因为要在HA181上启动HDFS、在HA183启动yarn,
所以HA181上的slaves文件指定的是datanode的位置,HA183上的slaves文件指定的是nodemanager的位置)
HA185
HA186
HA187
2.2.7配置免密码登陆
#首先要配置HA181到HA182、HA183、HA184、HA185、HA186、HA187的免密码登陆
#在HA181上生产一对钥匙
ssh-keygen-trsa
#将公钥拷贝到其他节点,包括自己
ssh-copy-idHA181
ssh-copy-idHA182
ssh-copy-idHA183
ssh-copy-idHA184
ssh-copy-idHA185
ssh-copy-idHA186
ssh-copy-idHA187
#配置HA183到HA184、HA185、HA186、HA187的免密码登陆
#在HA183上生产一对钥匙
ssh-keygen-trsa
#将公钥拷贝到其他节点
ssh-copy-idHA184
ssh-copy-idHA185
ssh-copy-idHA186
ssh-copy-idHA187
#注意:两个namenode之间要配置ssh免密码登陆,别忘了配置HA182到HA181的免登陆
在HA182上生产一对钥匙
ssh-keygen-trsa
ssh-copy-id-iHA181

2.4将配置好的hadoop拷贝到其他节点
scp-r/app/hadoop-2.5.1/HA182:/app/
scp-r/app/hadoop-2.5.1/HA183:/app/
scp-r/app/hadoop-2.5.1/HA184:/app/
scp-r/app/hadoop-2.5.1/HA185:/app/
scp-r/app/hadoop-2.5.1/HA186:/app/
scp-r/app/hadoop-2.5.1/HA187:/app/
###注意:严格按照下面的步骤
2.5启动zookeeper集群(分别在HA185、HA186、tcast07上启动zk)
cd/app/zookeeper-3.4.5/bin/
./zkServer.shstart
#查看状态:一个leader,两个follower
./zkServer.shstatus

2.6启动journalnode(分别在在HA185、HA186、HA187上执行)
cd/app/hadoop-2.5.1
hadoop-daemon.shstartjournalnode
#运行jps命令检验,HA185、HA186、HA187上多了JournalNode进程
2.7格式化ZKFC(在HA181上执行即可) hdfszkfc-formatZK
2.8格式化HDFS
#在HA181上执行命令:
hdfsnamenode-format
#格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/app/hadoop-2.4.1/tmp,然后将/weekend/hadoop-2.4.1/tmp拷贝到HA182的/weekend/hadoop-2.4.1/下。
scp-rtmp/HA182:/app/hadoop-2.5.1/
##也可以这样,建议hdfsnamenode-bootstrapStandby



2.9启动HDFS(在HA181上执行)
sbin/start-dfs.sh
2.10启动YARN(#####注意#####:是在HA183上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动)
sbin/start-yarn.sh

到此,hadoop-2.4.1配置完毕,可以统计浏览器访问:
http://192.168.1.181:50070
NameNode'HA181:9000'(active)
http://192.168.1.182:50070
NameNode'HA182:9000'(standby)

验证HDFSHA
首先向hdfs上传一个文件
hadoopfs-put/etc/profile/profile
hadoopfs-ls/
然后再kill掉active的NameNode
kill-9
通过浏览器访问:http://192.168.1.182:50070
NameNode'HA182:9000'(active)
这个时候HA182上的NameNode变成了active
在执行命令:
hadoopfs-ls/
-rw-r--r--3rootsupergroup19262014-02-0615:36/profile
刚才上传的文件依然存在!!!
手动启动那个挂掉的NameNode
sbin/hadoop-daemon.shstartnamenode
通过浏览器访问:http://192.168.1.181:50070
NameNode'HA181:9000'(standby)

验证YARN:
运行一下hadoop提供的demo中的WordCount程序:
hadoopjarshare/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jarwordcount/profile/out

OK,大功告成!!!
CID-74d21742-3e4b-4df6-a99c-d52f703b49c0



测试集群工作状态的一些指令:
bin/hdfsdfsadmin-report 查看hdfs的各节点状态信息
bin/hdfshaadmin-getServiceStatenn1 获取一个namenode节点的HA状态
sbin/hadoop-daemon.shstartnamenode单独启动一个namenode进程
./hadoop-daemon.shstartzkfc单独启动一个zkfc进程

如何在Linux上安装与配置Hadoop

Hadoop最早是为了在Linux平台上使用而开发的,但是Hadoop在UNIX、Windows和Mac OS X系统上也运行良好。不过,在Windows上运行Hadoop稍显复杂,首先必须安装Cygwin以模拟Linux环境,然后才能安装Hadoop。Hadoop的安装非常简单,大家可以在官网上下载到最近的几个版本,在Unix上安装Hadoop的过程与在Linux上安装基本相同,因此下面不会对其进行详细介绍。

在Linux上安装与配置Hadoop

在Linux上安装Hadoop之前,需要先安装两个程序:

1. JDK 1.6或更高版本;

2. SSH(安全外壳协议),推荐安装OpenSSH。

下面简述一下安装这两个程序的原因:

1. Hadoop是用Java开发的,Hadoop的编译及MapReduce的运行都需要使用JDK。

2. Hadoop需要通过SSH来启动salve列表中各台主机的守护进程,因此SSH也是必须安装的,即使是安装伪分布式版本(因为Hadoop并没有区分集群式和伪分布式)。对于伪分布式,Hadoop会采用与集群相同的处理方式,即依次序启动文件conf/slaves中记载的主机上的进程,只不过伪分布式中salve为localhost(即为自身),所以对于伪分布式Hadoop,SSH一样是必须的。

一、安装JDK 1.6

安装JDK的过程很简单,下面以Ubuntu为例。

(1)下载和安装JDK

确保可以连接到互联网,输入命令:

sudoapt-getinstallsun-java6-jdk

输入密码,确认,然后就可以安装JDK了。

这里先解释一下sudo与apt这两个命令,sudo这个命令允许普通用户执行某些或全部需要root权限命令,它提供了详尽的日志,可以记录下每个用户使用这个命令做了些什么操作;同时sudo也提供了灵活的管理方式,可以限制用户使用命令。sudo的配置文件为/etc/sudoers。

apt的全称为the Advanced Packaging Tool,是Debian计划的一部分,是Ubuntu的软件包管理软件,通过apt安装软件无须考虑软件的依赖关系,可以直接安装所需要的软件,apt会自动下载有依赖关系的包,并按顺序安装,在Ubuntu中安装有apt的一个图形化界面程序synaptic(中文译名为“新立得”),大家如果有兴趣也可以使用这个程序来安装所需要的软件。(如果大家想了解更多,可以查看一下关于Debian计划的资料。)

(2)配置环境变量

输入命令:

sudogedit/etc/profile

输入密码,打开profile文件。

在文件的最下面输入如下内容:

#setJavaEnvironment
exportJAVA_HOME=(你的JDK安装位置,一般为/usr/lib/jvm/java-6-sun)
exportCLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH"
exportPATH="$JAVA_HOME/:$PATH"

这一步的意义是配置环境变量,使你的系统可以找到JDK。

(3)验证JDK是否安装成功

输入命令:

java-version

查看信息:

javaversion"1.6.0_14"
Java(TM)SERuntimeEnvironment(build1.6.0_14-b08)
JavaHotSpot(TM)ServerVM(build14.0-b16,mixedmode)

二、配置SSH免密码登录

同样以Ubuntu为例,假设用户名为u。

1)确认已经连接上互联网,输入命令

sudoapt-getinstallssh

2)配置为可以无密码登录本机。

首先查看在u用户下是否存在.ssh文件夹(注意ssh前面有“.”,这是一个隐藏文件夹),输入命令:

ls-a/home/u

一般来说,安装SSH时会自动在当前用户下创建这个隐藏文件夹,如果没有,可以手动创建一个。

接下来,输入命令:

ssh-keygen-tdsa-P''-f~/.ssh/id_dsa

解释一下,ssh-keygen代表生成密钥;-t(注意区分大小写)表示指定生成的密钥类型;dsa是dsa密钥认证的意思,即密钥类型;-P用于提供密语;-f指定生成的密钥文件。(关于密钥密语的相关知识这里就不详细介绍了,里面会涉及SSH的一些知识,如果读者有兴趣,可以自行查阅资料。)

在Ubuntu中,~代表当前用户文件夹,这里即/home/u。

这个命令会在.ssh文件夹下创建两个文件id_dsa及id_dsa.pub,这是SSH的一对私钥和公钥,类似于钥匙及锁,把id_dsa.pub(公钥)追加到授权的key里面去。

输入命令:

cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys

这段话的意思是把公钥加到用于认证的公钥文件中,这里的authorized_keys是用于认证的公钥文件。

至此无密码登录本机已设置完毕。

3)验证SSH是否已安装成功,以及是否可以无密码登录本机。

输入命令:

ssh-version

显示结果:

OpenSSH_5.1p1Debian-6ubuntu2,OpenSSL0.9.8g19Oct2007
Badescapecharacter'rsion'.

显示SSH已经安装成功了。

输入命令:

sshlocalhost

会有如下显示:

Theauthenticityofhost'localhost(::1)'can'tbeestablished.
RSAkeyfingerprintis8b:c3:51:a5:2a:31:b7:74:06:9d:62:04:4f:84:f8:77.
Areyousureyouwanttocontinueconnecting(yes/no)?yes
Warning:Permanentlyadded'localhost'(RSA)tothelistofknownhosts.
Linuxmaster2.6.31-14-generic#48-UbuntuSMPFriOct1614:04:26UTC2009i686
ToaccessofficialUbuntudocumentation,pleasevisit:
http://help.ubuntu.com/
Lastlogin:MonOct1817:12:402010frommaster
admin@Hadoop:~$

这说明已经安装成功,第一次登录时会询问你是否继续链接,输入yes即可进入。

实际上,在Hadoop的安装过程中,是否无密码登录是无关紧要的,但是如果不配置无密码登录,每次启动Hadoop,都需要输入密码以登录到每台机器的DataNode上,考虑到一般的Hadoop集群动辄数百台或上千台机器,因此一般来说都会配置SSH的无密码登录。

三、安装并运行Hadoop

介绍Hadoop的安装之前,先介绍一下Hadoop对各个节点的角色定义。

Hadoop分别从三个角度将主机划分为两种角色。第一,划分为master和slave,即主人与奴隶;第二,从HDFS的角度,将主机划分为NameNode和DataNode(在分布式文件系统中,目录的管理很重要,管理目录的就相当于主人,而NameNode就是目录管理者);第三,从MapReduce的角度,将主机划分为JobTracker和TaskTracker(一个job经常被划分为多个task,从这个角度不难理解它们之间的关系)。

Hadoop有官方发行版与cloudera版,其中cloudera版是Hadoop的商用版本,这里先介绍Hadoop官方发行版的安装方法。

Hadoop有三种运行方式:单节点方式、单机伪分布方式与集群方式。乍看之下,前两种方式并不能体现云计算的优势,在实际应用中并没有什么意义,但是在程序的测试与调试过程中,它们还是很有意义的。

你可以通过以下地址获得Hadoop的官方发行版,下载Hadoop-0.20.2.tar.gz并将其解压,这里会解压到用户目录下,一般为:/home/[你的用户名]/。

单节点方式配置:

安装单节点的Hadoop无须配置,在这种方式下,Hadoop被认为是一个单独的Java进程,这种方式经常用来调试。

伪分布式配置:

你可以把伪分布式的Hadoop看做是只有一个节点的集群,在这个集群中,这个节点既是master,也是slave;既是NameNode也是DataNode;既是JobTracker,也是TaskTracker。

伪分布式的配置过程也很简单,只需要修改几个文件,如下所示。

进入conf文件夹,修改配置文件:

Hadoop-env.sh:
exportJAVA_HOME=“你的JDK安装地址”

指定JDK的安装位置:

conf/core-site.xml:


fs.default.name
hdfs://localhost:9000

这是Hadoop核心的配置文件,这里配置的是HDFS的地址和端口号。

conf/hdfs-site.xml:


dfs.replication
1

这是Hadoop中HDFS的配置,配置的备份方式默认为3,在单机版的Hadoop中,需要将其改为1。

conf/mapred-site.xml:


mapred.job.tracker
localhost:9001

这是Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。

需要注意的是,如果安装的是0.20之前的版本,那么只有一个配置文件,即为Hadoop-site.xml。

接下来,在启动Hadoop前,需格式化Hadoop的文件系统HDFS(这点与Windows是一样的,重新分区后的卷总是需要格式化的)。进入Hadoop文件夹,输入下面的命令:

bin/HadoopNameNode-format

格式化文件系统,接下来启动Hadoop。

输入命令:

bin/start-all.sh(全部启动)

最后,验证Hadoop是否安装成功。

打开浏览器,分别输入网址:

http://localhost:50030(MapReduce的Web页面)
http://localhost:50070(HDFS的Web页面)

如果都能查看,说明Hadoop已经安装成功。

对于Hadoop来说,安装MapReduce及HDFS都是必须的,但是如果有必要,你依然可以只启动HDFS(start-dfs.sh)或MapReduce(start-mapred.sh)。

如何配置Hadoop环境

安装前设置 在安装Hadoop之前,需要进入Linux环境下,连接Linux使用SSH(安全Shell)。按照下面提供的步骤设立Linux环境。 创建一个用 在开始时,建议创建一个单独的用户Hadoop以从Unix文件系统隔离Hadoop文件系统。按照下面给出的步骤来创建用户: 使用 “su” 命令开启root . 创建用户从root帐户使用命令 “useradd username”. 现在,可以使用命令打开一个现有的用户帐户“su username”. 打开Linux终端,输入以下命令来创建一个用户。 $ su password: # useradd hadoop # passwd had

如何安装hadoop

在Unix上安装Hadoop的过程与在Linux上安装基本相同,因此下面不会对其进行详细介绍。 在Linux上安装与配置Hadoop 在Linux上安装Hadoop之前,需要先安装两个程序: 1. JDK 1.6或更高版本; 2. SSH(安全外壳协议),推荐安装OpenSSH。 下面简述一下安装这两个程序的原因: 1. Hadoop是用Java开发的,Hadoop的编译及MapReduce的运行都需要使用JDK。 2. Hadoop需要通过SSH来启动salve列表中各台主机的守护进程,因此SSH也是必须安装的,即使是安装伪分布式版本(因为Hadoop并没有区分集群式和伪分布式)。对于伪分
展开全文阅读