1-基于Ubuntu的hadoop集群安装与配置课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Ubuntu的Hadoop集群安装与配置
一、实验目的
1、掌握Hadoop原理机制,熟悉Hadoop集群体系结构、核心技术。

2、安装和配置Hadoop集群。

二、实验原理
Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台。

以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。

Hadoop 中的分布式文件系统 HDFS 由一个管理结点 ( NameNode )和N个数据结点( DataNode )组成,每个结点均是一台普通的计算机。

在使用上同我们熟悉的单机上的文件系统非常类似,一样可以建目录,创建,复制,删除文件,查看文件内容等。

但其底层实现上是把文件切割成 Block,然后这些 Block 分散地存储于不同的 DataNode 上,每个 Block 还可以复制数份存储于不同的 DataNode 上,达到容错容灾之目的。

NameNode 则是整个HDFS 的核心,它通过维护一些数据结构,记录了每一个文件被切割成了多少个 Block,这些 Block 可以从哪些 DataNode 中获得,各个 DataNode 的状态等重要信息。

MapReduce 是 Google 公司的核心计算模型,它将复杂的运行于大规模集群上的并行计算过程高度的抽象到了两个函数,Map 和 Reduce, 这是一个令人惊讶的简单却又威力巨大的模型。

适合用 MapReduce 来处理的数据集(或任务)有一个基本要求: 待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。

基于它写出来的程序能够运行在由上千台商用机器组成的大型集群上,并以一种可靠容错的方式并行处理T级别的数据集,实现了Haddoop在集群上的数据和任务的并行计算与处理。

个人认为,从HDFS(分布式文件系统)观点分析,集群中的服务器各尽其责,通力合作,共同提供了整个文件系统的服务。

从职责上集群服务器以各自任务分为namenode、datanode服务器.其中namenode为主控服务器,datanode为数据服务器。

Namenode管理所有的datanode数据存储、备份、组织记录分配逻辑上的处理。

说明白点namenode就是运筹
帷幄、负责布局指挥将军,具体的存储、备份是由datanode这样的战士执行完成的。

故此很多资料将HDFS分布式文件系统的组织结构分为master(主人)和slaver(奴隶)的关系。

其实和namenode、datanode划分道理是一样的。

从MapReduce计算模型观点分析,Map/Reduce框架和分布式文件系统是运行在一组相同的节点上的,也就是说计算节点和存储节点在一起。

这种配置允许在那些已经存好数据的节点上高效的调度任务,这样可以使整个集群的网络宽带得到非常高效的利用。

另外,在Hadoop中,用于执行MapReduce任务的机器有两个角色:JobTracker,TaskTracker。

JobTracker(一个集群中只能有一台)是用于管理和调度工作的,TaskTracker是用于执行工作的。

在技术方面Hadoop体系具体包含了以下技术:
Common:在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common。

Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。

MapReduce:并行计算框架,0.20前使用org.apache.hadoop.mapred旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API。

HDFS:Hadoop分布式文件系统(Hadoop Distributed File System)。

Pig:大数据分析平台,为用户提供多种接口。

Hive:数据仓库工具,由Facebook贡献。

Hbase:类似Google BigTable的分布式NoSQL列数据库。

(HBase和Avro已经于2010年5月成为顶级Apache项目)。

ZooKeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。

Sqoop:Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:MySQL, Oracle, Postgres等)中的数据导入到Hadoop的HDFS 中,也可以将HDFS的数据导入到关系型数据库中。

Oozie:负责MapReduce作业调度。

以上对Hadoop体系框架和相应技术做了相应分析,并从HDFS、MapReduce的角度分析了集群中的角色扮演,这既是我们实验的理论基础,也是实验研究Hadoop深层次系统知识体系结构的意义所在。

三、实验内容
实验的主要内容有如下几点:
1、Jdk安装:Hadoop是用Java编写的程序,Hadoop的编译及MapReduce的运行都需要JDK,因此在安装Hadoop之前,必须安装JDK1.6或更高版本。

2、SSH免密登录安装设置:Hadoop需要通过ssh(安全外壳协议)远程无密码登录,来启动Slave列表中各台机器的守护进程,因此ssh也是必须安装的。

3、Hadoop完全分布式集群的安装配置和启动验证。

四、实验步骤
为方便阐述,本实验只搭建一个有三台主机的小集群。

三台机器的具体分工命名如下:
主机网络结构图如下:
实验环境:Ubuntu14.04,hadoop-2.2.0,java-1.7.0-openjdk-i386,ssh。

综述:Hadoop完全分布式的安装需要以下几个过程:
(1)为防止权限不够,三台机器均开启root登录。

(2)为三台机器分配IP地址及相应的角色。

(3)对三台机器进行jdk安装并配置环境变量。

(4)对三台机器进行ssh(安全外壳协议)远程无密码登录安装配置。

(5)进行Hadoop集群完全分布式的安装配置。

下面对以上过程进行详细叙述。

1、三台机器开启root登录。

针对ubuntu-14.04默认是不开启root用户登录的,在这里开启root登录,只需要修改50-ubuntu.conf即可,命令如下
添加内容如下:
配置完成后开启root账号命令如下:
sudo passwd root
根据提示输入root账号密码。

重启ubuntu,登录窗口会有“登录”选项,这时候我们就可以通过root登录了。

2、在三台主机上分别设置/etc/hosts及/etc/hostname
hosts文件用于定义主机名与IP地址之间的对应关系(三台主机配置相同)。

命令如下:
配置结果如下:192.168.98.138master
192.168.98.141slaver1
192.168.98.140
hostname这个文件用于定义Ubuntu的主机名(不同ip对应的名字不同10.31.44.117对应master,10.31.44.200对应slaver1,10.31.44.201对应slaver2)。

命令:vim /etc/hostname
“你的主机名”(master,slaver1,slaver2)
重启
3、在三台主机上安装openjdk-7-jdk
使用命令apt-get install openjdk-7-jdk 进行安装JA V A环境。

具体操作命令如图1-1java安装。

按照以上命令安装完成后可以查看jdk安装目录
配置系统环境变量命令如下:
添加环境变量内容如下:
在/etc/profile文件末尾添加java用户环境变量如下:
至此JDK安装配置完成。

4、安装ssh配置免密登录
安装ssh命令如下:
安装完成后查看是否安装成功,如果有如下两个进程说明安装成功。

如果缺少以上任意一进程,需要重新安装对应如下ssh版本。

如果需要重新安装,使用命令:
apt-get install openssh-client
apt-get install openssh-server
安装成功后,需要更改sshd_config文件
命令:vim /etc/ssh/sshd_config
修改为如下图内容:
生成密钥并配置SSH免密码登录本机
执行以下命令,生成密钥对,并把公钥文件写入授权文件中生成密钥对及授权文件,公钥在/root/.ssh/下
然后将授权文件复制到slaver1主机中,输入命令:
scp authorized_keys slaver1:~/.ssh
然后在slave1机器中,使用同样命令生成密钥对,将公钥写入授权文件中。

让后将slaver1
主机中的授权文件复制到slaver2中,使用同样命令生成密钥对,将公钥写入授权文件中。

这样就完成了同一个授权文件拥有三个公钥。

最后将此时的授权文件分别复制到master主机、slaver1主机中,这样就完成了,ssh免密登录验证工作。

为了防止防火墙禁止一些端口号,三台机器应使用
关闭防火墙命令:ufw disable
重启三台机器,防火墙关闭命令才能生效,重启后后查看是否可以从master主机免密码登录slaver,输入命令:
ssh slaver1
ssh slaver2
5、进行Hadoop集群完全分布式的安装配置
将下载的hadoop-2.2.0解压至/root下,并更改名字为u
三台hadoop文件配置相同,所以配置完一台后,可以把整个hadoop复制过去就行了,现在开始配置master主机的hadoop文件。

需要配置的文件涉及到的有7个(标示有A的除外)如下图标示部分:
以上文件默认不存在的,可以复制相应的template文件获得(如mapred-site.xml文件)。

/var/lib/dpkg/alternatives/java
/usr/bin/java
/usr/lib/ure/share/java
/usr/lib/jvm/java-7-openjdk-amd64/bin/java
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
/usr/share/java
/usr/share/bash-completion/completions/java
/etc/ssl/certs/java
/etc/apparmor.d/abstractions/ubuntu-browsers.d/java
/etc/alternatives/java
配置文件1:hadoop-env.sh
修改JA V A_HOME值如下图:
配置文件2:yarn-env.sh
修改JA V A_HOME值如下图:
配置文件3:slaves(保存所有slave节点)写入以下内容:
配置文件4:core-site.xml
添加配置内容如下图:
配置文件5:hdfs-site.xml
配置文件6:mapred-site.xml
配置文件7:yarn-site.xml
上面配置完毕后,基本上完成了90%的工作,剩下的就是复制。

我们可以把整个hadoop复制过去使用命令如下:
scp -r /root/u slaver1:/root/
scp -r /root/u slaver2:/root/
为方便用户和系统管理使用hadoop、hdfs相关命令,需要在/etc/environment配置系统环境变量,使用命令:vim /etc/environment
配置内容为hadoop目录下的bin、sbin路径,具体如下
添加完后执行生效命令:source /etc/environment
下面要做的就是启动验证,建议在验证前,把以上三台机器重启,使其相关配置生效。

6、启动验证
在master节点上进行格式化namenode:
命令:hadoop namenode -format
在master节点上进行启动hdfs:
start-all.sh
使用Jps命令master有如下进程,说明ok
使用jps命令slaver1、slaver2有如下进程,说明ok
查看集群状态,命令:hadoop dfsadmin -report
查看分布式文件系统:http://master:50070
查看MapReduce:http://master:8088
使用以上命令,当你看到如下图所示的效果图时,恭喜你完成了Hadoop完全分布式的安装设置,其实这些部署还是比较基本的,对于Hadoop高深的体系结构和强大技术应用,这仅仅是一个小小的开始。

集群的关闭在master节点上执行命令如下:
stop-all.sh
五、附录hadoop基本操作实践
基本命令
1. 格式化工作空间
进入bin目录,运行hadoop namenode –format
2. 启动hdfs
进入hadoop目录,在bin/下面有很多启动脚本,可以根据自己的需要来启动。

* start-all.sh 启动所有的Hadoop守护。

包括namenode, datanode, jobtracker, tasktrack
* stop-all.sh 停止所有的Hadoop
* start-dfs.sh 启动Hadoop DFS守护Namenode和Datanode
* stop-dfs.sh 停止DFS守护
HDFS文件操作
Hadoop使用的是HDFS,能够实现的功能和我们使用的磁盘系统类似。

并且支持通配符,如*。

1. 查看文件列表
b. 执行hadoop fs -ls /
查看hdfs中/目录下的所有文件(包括子目录下的文件)。

a. 执行hadoop fs -ls -R /
2. 创建文件目录
a. 执行hadoop fs -mkdir /newDir
3. 删除文件
删除hdfs中/目录下一个名叫needDelete的文件
a. 执行hadoop fs -rm /needDelete
删除hdfs中/hdfs目录以及该目录下的所有文件
a. 执行hadoop fs -rm -r /hdfs
4. 上传文件
上传一个本机/home/admin/newFile的文件到hdfs中/目录下
执行hadoop fs –put /home/admin/newFile /
5. 下载文件
下载hdfs中/ 目录下的newFile文件到本机/home/admin/newFile中
a. 执行hadoop fs –get /newFile /home/admin/newFile
6. 查看文件内容
查看hdfs中/目录下的newFile文件
a. 执行hadoop fs –cat /newFile。

相关文档
最新文档