基于Ubuntu的hadoop集群安装与配置

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

Ubuntu 系统安装
在这里补充一下Ubuntu ubuntu-14.04.3-server-amd64 所遇到的问题
牵扯到挂载问题
当时我们早期安装的时候总是会出现安装失败的现象,后来我们把ubuntu-14.04.3-server-amd64 -iso镜像文件直接挂栽在/cdrom 文件夹下面
Mount /dev/sdc /mnt/
Mount -t iso9600 -o loop /mnt/ubuntu-14.04.3-server-amd64 -iso /cdrom
Mou nt
基于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完全分布式集群的安装配置和启动验证。

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

三台机器的具体分工命名如下:
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即可,命令如下
添加内容如下:
配置完成后开启root账号命令如下:
sudo passwd root
根据提示输入root账号密码。

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

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

命令如下:
配置结果如下:
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
更新软件源:
配置Ubuntu Server高速apt-get源
今天刚装上Ubuntu Server 12,默认的apt-get源比较慢。

更改一下源地址。

方法:
1、修改源地址:
cp /etc/apt/sources.list /etc/apt/sources.list.bak
vim /etc/apt/sources.list
加入如下内容(中科大的):
deb /ubuntu/ precise-updates main restricted deb-src /ubuntu/ precise-updates main restricted
deb /ubuntu/ precise universe
deb-src /ubuntu/ precise universe
deb /ubuntu/ precise-updates universe
deb-src /ubuntu/ precise-updates universe deb /ubuntu/ precise multiverse
deb-src /ubuntu/ precise multiverse
deb /ubuntu/ precise-updates multiverse
deb-src /ubuntu/ precise-updates multiverse deb /ubuntu/ precise-backports main
restricted universe multiverse
deb-src /ubuntu/ precise-backports main restricted universe multiverse
deb /ubuntu precise-security main restricted deb-src /ubuntu precise-security main restricted
deb /ubuntu precise-security universe
deb-src /ubuntu precise-security universe
deb /ubuntu precise-security multiverse deb-src /ubuntu precise-security multiverse
查询资料:
/lyp3314/archive/2012/07/18/2597973.html
以上信息是为了安装软件更新软件源,我在做的时候用的就是服务器里面虚拟出来的三台虚拟机,在自动更新软件源这方面有很大问题,故而自己在网上查找软件源手动输入(此时我的内心是奔溃的,但这并不是最坑的)
使用命令apt-get install openjdk-7-jdk 进行安装JA V A环境。

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

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

配置jdk环境变量,并不算是麻烦事,但我在配置过程中出错了,导致的问题就是,在命令框输入任何命令都是无效的,最后只能找到/usr/bin/vi 来启动vi编辑器,重新配置环境变量。

按以上的步骤配置不会有问题的
4、安装ssh配置免密登录
ssh及ssh-agent注意事项
(2012-06-27 17:24:30) service ssh start
转载▼
标签:
杂谈
注意:一定要给.ssh文件夹和authorized_keys文件赋予权限,分别为711和644
ssh连接的用户信息保存在know_hosts文件夹下,如果想要删除某个机器的连接,命令为
ssh-keygen -R 机器名
清除私钥密码
1.在终端下输入ssh-keygen -p。

2.系统会提示选择需要修改的私钥,默认是/home/username/.ssh/id_rsa。

3.选好文件后按回车,会提示你输入旧密码。

4.输入好后会提示输入新密码。

5.直接回车,提示确认新密码再直接回车,此时指定的私钥的密码就被清除了
查看所连机器的公钥,用ssh-keygen -F <hostname>
OpenSSH在4.0p1引入了 Hash Known Hosts功能,在known_hosts中把访问过的计算机名称或IP地址以hash方式存放,令入侵都不能直接知道你到访过那些计算机。

这项新项功能缺省是关闭的,要你手动地在ssh_config加上\"HashKnownHosts yes\"才会被开启
/etc/ssh/ssh_config 文件是ssh的配置文件
"ssh-keygen -F 计算机名称\"找出相关机器的公钥
启用ssh-agent:
$eval `ssh-agent ` (反引号)
查询资料:
/s/blog_72827fb101018wtx.html
以上信息就是百度得来的关于ssh问题
关于ssh配置,我只想说直接使用命令安装ssh是可以的,在开启ssh的时候可能会没有ssh-gent ,我的就是这样,后来按了卸再按结果依然如初,通过百度才发现没有打开于是乎又学会了一个命令:eval ssh-agent 执行后会再查看ssh-agent 就会出现了。

为什么会这样呢,自己猜吧
安装ssh命令如下:
安装完成后查看是否安装成功,如果有如下两个进程说明安装成功。

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

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

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

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

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

为了防止防火墙禁止一些端口号,三台机器应使用
关闭防火墙命令:ufw disable
重启三台机器,防火墙关闭命令才能生效,重启后后查看是否可以从master主机免密码登录slaver,输入命令:
ssh slaver1
ssh slaver2
关于开机自启动项目,我是把命令写在/etc/rc.local 里面,等到开机的时候,写在里面的命令会自动启动运行的
5、进行Hadoop集群完全分布式的安装配置
在这里我想说一下编译问题,由于我使用的是ubuntu-14.04.3-server-amd64
hadoop-2.6.0
下载的hadoop解压后还要重新编译,编译好的hadoop-2.6.0 才能用,直接根据下列步骤做就行了,我说一下我遇到的问题
1.编译失败hadoop 原因----------------------maven环境变量配置出错,因为在本文件指导安装配置hadoop的文件中是没有maven环境变量配置的(我同学没配也成功编译了,每个人遇到的问题可能不一样,主要是独立解决问题)我的环境变量写在/etc/profile(这是针对所有用户的)
2.每个hadoop的版本不同,发生的情况也不同,只能应对了
将下载的hadoop-2.2.0解压至/root下,并更改名字为u
三台hadoop文件配置相同,所以配置完一台后,可以把整个hadoop复制过去就行了,现在开始配置master主机的hadoop文件。

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

配置文件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、启动验证
这个步骤有的问题就是:
1.上一步骤文件没有配置好,不过格式化的时候会出现ERROR,并且提示你你配置文件出错的地方,这点要注意。

2.hadoop的环境变量没有配好,具体表现在start-all.sh 这个命令上面,就是找不到start-all.sh 这就是环境变量没有配好的原因,顺便说一下start-all.sh这个文件在sbin这个目录里面,所以个人建议把/bin 和/sbin的环境变量都配上
在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
好了,已经基本ok,在这个过程中你会遇到好多问题,但那都不算是什么,加油吧。

如有什么困难可以联系
红字部分可以在遇到问题时阅读,作为参考。

纯属个人体会,如有雷同就让它雷同吧
21 / 21。

相关文档
最新文档