基于Ubuntu的hadoop集群安装与配置.docx
- 文档编号:26179027
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:20
- 大小:1.89MB
基于Ubuntu的hadoop集群安装与配置.docx
《基于Ubuntu的hadoop集群安装与配置.docx》由会员分享,可在线阅读,更多相关《基于Ubuntu的hadoop集群安装与配置.docx(20页珍藏版)》请在冰豆网上搜索。
基于Ubuntu的hadoop集群安装与配置
基于Ubuntu的Hadoop集群安装与配置
一、实验目的
1、掌握Hadoop原理机制,熟悉Hadoop集群体系结构、核心技术。
2、安装和配置Hadoop集群。
二、实验原理
Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台。
以Hadoop分布式文件系统(HDFS)和MapReduce(GoogleMapReduce的开源实现)为核心的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被分离为独立的子项目,其余内容为HadoopCommon。
Avro:
新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。
MapReduce:
并行计算框架,0.20前使用org.apache.hadoop.mapred旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API。
HDFS:
Hadoop分布式文件系统(HadoopDistributedFileSystem)。
Pig:
大数据分析平台,为用户提供多种接口。
Hive:
数据仓库工具,由Facebook贡献。
Hbase:
类似GoogleBigTable的分布式NoSQL列数据库。
(HBase和Avro已经于2010年5月成为顶级Apache项目)。
ZooKeeper:
分布式锁设施,提供类似GoogleChubby的功能,由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完全分布式集群的安装配置和启动验证。
4、实验步骤
为方便阐述,本实验只搭建一个有三台主机的小集群。
三台机器的具体分工命名如下:
IP
主机名
功能角色
10.31.44.117
master(主人)
namenode(控制节点)、JobTracker(工作分配)
10.31.44.200
slaver1(奴隶)
datanode(数据节点)、TaskTracker(任务执行)
10.31.44.201
slaver2(奴隶)
datanode(数据节点)、TaskTracker(任务执行)
主机网络结构图如下:
实验环境:
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即可,命令如下
vim/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
//ubuntuserver下开启root登录
安装完成如需使用root身份登录,可打开终端输入以下命令:
#设置root密码
sudopasswdroot
#切换到root用户
sudo-s
想要在登录界面使用root身份登录,可编辑/etc/lightdm/目录下的lightdm.conf文件,如没有此文件,直接创建
mkdir/etc/lightdm
touchlightdm.conf
vi/etc/lightdm/lightdm.conf
文件内容最终为:
[SeatDefaults]
#启动后以root身份自动登录
autologin-user=root
greeter-session=unity-greeter
user-session=ubuntu
#手工输入登陆系统的用户名和密码
greeter-show-manual-login=true
#禁用guest用户
allow-guest=false
[SeatDefaults]
autologin-user=root
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true
修改完之后执行reboot命令重启Ubuntu生效
添加内容如下:
配置完成后开启root账号命令如下:
sudopasswdroot
根据提示输入root账号密码。
重启ubuntu,登录窗口会有“登录”选项,这时候我们就可以通过root登录了。
2、在三台主机上分别设置/etc/hosts及/etc/hostname
hosts文件用于定义主机名与IP地址之间的对应关系(三台主机配置相同)。
命令如下:
配置结果如下:
192.168.10.210master
192.168.10.209slaver1
192.168.10.207slaver2
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
######移动文件命令:
mv/home/ck/jdk-7u67-linux-x64.tar.gz/root
mkdir/usr/lib/jvm
mv/root/jdk-7u67-linux-x64.tar.gz/usr/lib/jvm
##########安装:
tar-zxvfjdk-7u67-linux-x64.tar.gz
使用命令apt-getinstallopenjdk-7-jdk进行安装JAVA环境。
具体操作命令如图1-1java安装。
按照以上命令安装完成后可以查看jdk安装目录
配置系统环境变量命令如下:
添加环境变量内容如下:
vim/etc/environment
/usr/lib/jvm/jdk1.7.0_67/bin/:
/root/u/bin:
在/etc/profile文件末尾添加java用户环境变量如下:
exportJAVA_HOME=/usr/lib/jvm/jdk1.7.0_67
exportJRE_HOME=/usr/lib/jvm/jdk1.7.0_67/jre
exportPATH=${JAVA_HOME}/bin:
$PATH
exportCLASSPATH=.:
${JAVA_HOME}/lib:
${JRE_HOME}/lib
至此JDK安装配置完成。
使环境变量生效:
source/etc/profile
######################需要重启reboot
4、安装ssh配置免密登录
安装ssh命令如下:
apt-getinstallssh
安装完成后查看是否安装成功,如果有如下两个进程说明安装成功。
ps-e|grepssh
如果缺少以上任意一进程,需要重新安装对应如下ssh版本。
如果需要重新安装,使用命令:
apt-getinstallopenssh-client
apt-getinstallopenssh-server
安装成功后,需要更改sshd_config文件
命令:
vim/etc/ssh/sshd_config
修改为如下图内容:
生成密钥并配置SSH免密码登录本机
执行以下命令,生成密钥对,并把公钥文件写入授权文件中
ssh-keygen–tdsa
cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys
生成密钥对及授权文件,公钥在/root/.ssh/下
然后将授权文件复制到slaver1主机中,输入命令:
scpauthorized_keysslaver1:
~/.ssh
然后在slave1机器中,使用同样命令生成密钥对,将公钥写入授权文件中。
让后将slaver1主机中的授权文件复制到slaver2中,使用同样命令生成密钥对,将公钥写入授权文件中。
这样就完成了同一个授权文件拥有三个公钥。
最后将此时的授权文件分别复制到master主机、slaver1主机中,这样就完成了,ssh免密登录验证工作。
为了防止防火墙禁止一些端口号,三台机器应使用
关闭防火墙命令:
ufwdisable
重启三台机器,防火墙关闭命令才能生效,重启后后查看是否可以从master主机免密码登录slaver,输入命令:
sshslaver1
sshslaver2
5、进行Hadoop集群完全分布式的安装配置
将下载的hadoop-2.2.0解压至/root下,并更改名字为u
三台hadoop文件配置相同,所以配置完一台后,可以把整个hadoop复制过去就行了,现在开始配置master主机的hadoop文件。
需要配置的文件涉及到的有7个(标示有A的除外)如下图标示部分:
以上文件默认不存在的,可以复制相应的template文件获得(如mapred-site.xml文件)。
配置文件1:
hadoop-env.sh
修改JAVA_HOME值如下图:
exportJAVA_HOME=/usr/lib/jvm/jdk1.7.0_67
配置文件2:
yarn-env.sh
修改JAVA_HOME值如下图:
配置文件3:
slaves(保存所有slave节点)写入以下内容:
配置文件4:
core-site.xml
添加配置内容如下图:
//master:
9000
配置文件5:
hdfs-site.xml
/home/hdfs_all/dfs/name
/home/hdfs_all/dfs/data
配置文件6:
mapred-site.xml
10020
19888
配置文件7:
yarn-site.xml
8032
8030
8031
8033
8088
上面配置完毕后,基本上完成了90%的工作,剩下的就是复制。
我们可以把整个hadoop复制过去使用命令如下:
scp-r/root/uslaver1:
/root/
scp-r/root/uslaver2:
/root/
为方便用户和系统管理使用hadoop、hdfs相关命令,需要在/etc/environment配置系统环境变量,使用命令:
vim/etc/environment
配置内容为hadoop目录下的bin、sbin路径,具体如下
添加完后执行生效命令:
source/etc/environment
下面要做的就是启动验证,建议在验证前,把以上三台机器重启,使其相关配置生效。
6、启动验证
在master节点上进行格式化namenode:
命令:
hadoopnamenode-format
在master节点上进行启动hdfs:
start-all.sh
使用Jps命令master有如下进程,说明ok
使用jps命令slaver1、slaver2有如下进程,说明ok
查看集群状态,命令:
hadoopdfsadmin-report
查看分布式文件系统:
http:
//master:
50070
查看MapReduce:
http:
//master:
8088
使用以上命令,当你看到如下图所示的效果图时,恭喜你完成了Hadoop完全分布式的安装设置,其实这些部署还是比较基本的,对于Hadoop高深的体系结构和强大技术应用,这仅仅是一个小小的开始。
集群的关闭在master节点上执行命令如下:
stop-all.sh
五、附录hadoop基本操作实践
基本命令
1.格式化工作空间
进入bin目录,运行hadoopnamenode–format
2.启动hdfs
进入hadoop目录,在bin/下面有很多启动脚本,可以根据自己的需要来启动。
*start-all.sh启动所有的Hadoop守护。
包括namenode,datanode,jobtracker,tasktrack
*stop-all.sh停止所有的Hadoop
*start-dfs.sh启动HadoopDFS守护Namenode和Datanode
*stop-dfs.sh停止DFS守护
HDFS文件操作
Hadoop使用的是HDFS,能够实现的功能和我们使用的磁盘系统类似。
并且支持通配符,如*。
1.查看文件列表
b.执行hadoopfs-ls/
查看hdfs中/目录下的所有文件(包括子目录下的文件)。
a.执行hadoopfs-ls-R/
2.创建文件目录
a.执行hadoopfs-mkdir/newDir
3.删除文件
删除hdfs中/目录下一个名叫needDelete的文件
a.执行hadoopfs-rm/needDelete
删除hdfs中/hdfs目录以及该目录下的所有文件
a.执行hadoopfs-rm-r/hdfs
4.上传文件
上传一个本机/home/admin/newFile的文件到hdfs中/目录下
执行hadoopfs–put/home/admin/newFile/
5.下载文件
下载hdfs中/目录下的newFile文件到本机/home/admin/newFile中
a.执行hadoopfs–get/newFile/home/admin/newFile
6.查看文件内容
查看hdfs中/目录下的newFile文件
a.执行hadoopfs–cat/newFile
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Ubuntu hadoop 集群 安装 配置