Hadoop完全分布式详细安装过程.docx
- 文档编号:5072354
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:43
- 大小:2.98MB
Hadoop完全分布式详细安装过程.docx
《Hadoop完全分布式详细安装过程.docx》由会员分享,可在线阅读,更多相关《Hadoop完全分布式详细安装过程.docx(43页珍藏版)》请在冰点文库上搜索。
Hadoop完全分布式详细安装过程
Hadoop详细安装过程
一、本文思路
1、安装虚拟化PC工具VMware,用于支撑Linux系统。
2、在VMware上安装Ubuntu系统。
3、安装Hadoop前的准备工作:
安装JDK和SSH服务。
4、配置Hadoop。
5、为了方便开发过程,需安装eclipse。
6、运行一个简单的Hadoop程序:
WordCount.java
注:
在win7系统上,利用虚拟工具VMware建立若干个Linux系统,每个系统为一个节点,构建Hadoop集群。
先在一个虚拟机上将所有需要配置的东西全部完成,然后再利用VMware的克隆功能,直接生成其他虚拟机,这样做的目的是简单。
二、所需软件
1、VMware:
VMwareWorkstation,直接XX下载(在XX软件中心下载即可)。
2、Ubuntu系统:
ubuntu-15.04-desktop-amd64.iso,XX网盘:
注:
使用15.04版本的Ubuntu(其他版本也可以),是64位系统。
3、jdk:
jdk-8u60-linux-x64.tar.gz,网址:
注:
下载64位的Linux版本的jdk。
4、Hadoop:
hadoop-1.2.1-bin.tar.gz,网址:
注:
选择1.2.1版本的Hadoop。
5、eclipse:
eclipse-java-mars-1-linux-gtk-x86_64.tar.gz,网址:
http:
//www.eclipse.org/downloads/?
osType=linux
注:
要选择Linux版本的,64位,如下:
6、hadoop-eclipse-plugin-1.2.1.jar,这是eclipse的一个插件,用于Hadoop的开发,直接XX下载即可。
三、安装过程
1、安装VMware。
这个过程比较简单,下载后直接双击安装即可。
2、安装Ubuntu系统。
(1)打开VMwareWorkstation,“文件”—>“新建虚拟机”,如下:
(2)选择“典型”配置即可:
(3)选择“安装程序光盘印象文件”,点击“浏览”,选择下载的Ubuntu镜像:
(4)设定用户名和密码,可以随意写,但要记住,如下:
(5)设定“虚拟机名称”,可以随意写;“位置”最好不要放在C盘:
(6)“最大磁盘大小”根据自己电脑磁盘空间决定,尽量设置大些;选择“将虚拟硬盘存储为单个文件”,如下:
(7)点击“完成”即可。
等待安装,这个过程时间较长,耐心等待!
至此,一个虚拟机安装成功!
如下:
如果想改变虚拟机的配置,可以点击上图中的“编辑虚拟机设置”,如下:
3、实现主机(win7系统)和虚拟机之间的文件共享。
之所以要进行这一步,是因为我们的主机是win7系统,用的习惯了,使用它下载软件更方便些。
如何将win7系统中的文件放入Ubuntu系统中,使Ubuntu系统也能方便地使用这些文件,就需要在win7系统和Ubuntu系统间共享文件夹。
(1)安装VMwareTools。
因为在VMware上安装Ubuntu系统后,VMware会自动进行VMwareTools的安装,但这并不起作用,故而还需重新安装一次,选择“重新安装VMwareTools”,如下:
会弹出如下文件夹:
将此文件夹中的所用文件复制到home下的VMwareTools文件夹(这个文件夹需要自己建立),如下:
复制出来的原因是:
可以永久保存这些文件。
因为原始VMwareTools那个文件夹只有在点击“重新安装VMwareTools”之后才会出现。
用Ctrl+alt+t打开一个终端,进入到home下的VMwareTools文件夹下,进行如下:
sudotar-zxvfVMwareTools-xxx.tar.gz
注:
xxx是版本号,可能会不同。
解压后,进入vmware-tools-distrib文件夹,运行vmware-install.real.pl,如下:
cdvmware-tools-distrib
sudo./vmware-install.real.pl
安装过程中,对于提示的路径,直接enter即可;对于yes/no,默认输入即可。
(2)点击菜单栏的“虚拟机”—>“设置”,如下:
进入到“虚拟机设置”中,如下操作:
点击“添加”,点击“下一步”后出现如下界面:
“主机路径”选择的是windows系统中的用于共享的文件夹,这个文件夹需要提前建立。
下面的“名称”默认即可。
点击“下一步”—>选择“启用该共享”—>“完成”。
(3)挂载共享文件夹。
在home下新建share文件夹,然后执行如下:
sudomount-tvmhgfs.host:
/share
至此,win7和Ubuntu系统之间的共享文件夹已成功!
需要注意的是:
每次启动虚拟机,都需要使用上面的mount语句进行挂载,否则不能共享。
注:
mount经常支持不够好,安装vvmtools后,可以直接把文件拖入虚拟机镜像。
4、JDK安装
Hadoop运行需要JDK的支持,因为Hadoop使用Java语言实现的。
(1)解压JDK。
有两种方式:
第一,在终端使用tat–zxvfjdk-8u60-linux-x64.tar.gz进行解压。
第二,直接在文件中点击右键,选择“Extracthere”,如下:
解压后的文件夹为:
jdk1.8.0_60
(2)配置环境变量。
在终端输入:
sudogedit/etc/profile,打开profile文件进行环境变量的配置。
在文件的最后面加入以下几句:
#setjdkenvironment
exportJAVA_HOME=/home/lxl/Hadoop/JDK/jdk1.8.0_60#注意修改
exportCLASSPATH="$JAVA_HOME/lib:
$CLASSPAHT"
exportPATH=".:
$JAVA_HOME/bin:
$PATH"
注:
JAVA_HOME为jdk的解压路径,要换成你自己路径!
保存文件并退出,在终端输入:
source/etc/profile,意思是重新加载刚才修改后的文件。
这步很重要!
(3)检验jdk是否成功安装。
在终端输入:
java-version,会显示Java的版本信息,如下:
这样就表示jdk成功安装了。
5、安装ssh。
(1)在终端输入:
sudoapt-getinstallssh,等待下载安装即可。
(2)检测ssh是否正确安装:
在终端输入sshlocalhost,显示如下:
表示ssh已正确安装。
然后输入exit退出登录。
(3)配置ssh无密码访问。
在终端输入:
ssh-keygen-trsa–P“”,如下:
括号里的/home/lxl/.ssh为公钥和私钥的默认存放路径,直接回车即可。
然后进入.ssh目录下,执行如下命令:
catid_rsa.pub>>authorized_keys
含义:
将公钥id_rsa.pub中的内容复制给authorized_keys。
authorized_keys文件之前是没有的,经过cat命令可以自动生成。
如下:
需要注意的是:
此时的无密码访问还只是在这一个虚拟机上面,当克隆出其他虚拟机之后,每个虚拟机都需要生成自己的公钥和私钥,然后将所有虚拟机的公钥综合在一起,生成一个公共authorized_keys文件,将此公共的authorized_keys文件放入每个虚拟机的.ssh目录下,这样才能实现所有虚拟机之间的无密码访问。
后面会有展示!
6、开始Hadoop的安装。
(1)解压hadoop-1.2.1-bin.tar.gz。
和解压jdk一样,有两种方式,此处不多说了。
(2)配置conf目录下的hadoop-env.sh、core-site.xml、hdfs-site.xml,mapred-site.xml四个文件。
hadoop-env.sh文件中加入JAVA_HOME,即jdk的路径,如下:
exportJAVA_HOME=/home/lxl/Hadoop/JDK/jdk1.8.0_60
core-site.xml文件中在configuration间加入:
//master:
9000
—注意修改主机名master,如果不一样的话-->
—注意修改此路径名,最好是放在Hadoop-1.2.1下面-->
注:
此步需要在hadoop-1.2.1目录下手动建立tmp文件夹。
master为namenode节点的主机名。
hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多路径都依赖它。
如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中。
hdfs-site.xml文件中在两个configuration间加入:
—有几个slave,此处就写几-->
—注意修改路径名-->
—注意修改路径名-->
注:
此步需要在hadoop-1.2.1目录下手动建立hdfs文件夹,即运行程序前,hdfs文件夹必须存在,但不要创建hdfs下面的name和data文件夹,否则在格式化文件系统时会失败!
dfs.replication是数据块的冗余个数,默认是3,一般设置为slave的个数;
dfs.name.dir为namenode上名字空间的存放地址;
dfs.data.dir为datanode上数据块存放的地址。
注:
虽然每个节点上的hdfs-site.xml中的内容都一样,但是并不是每个节点上都会存在dfs.name.dir和dfs.data.dir两个文件夹的。
当运行程序时,namenode上的dfs.name.dir下只有name文件夹,不会有data文件夹,因为数据不放在namenode节点上;同理,datanode上的dfs.data.dir下只有data文件夹,不会有name文件夹,因为name只放在namenode和secondarynamenode上。
mapred-site.xml文件中在两个configuration间加入:
9001
—注意修改主机名master,如果不一样的话-->
注:
上面这四个文件的配置,在每个虚拟机上都完全一样的。
故而克隆之后,不需要修改这四个文件。
到此,一个虚拟机上的Hadoop已经配置完成。
下面开始克隆出其他虚拟机。
7、克隆出其他虚拟机。
上面的配置过程只是在一个虚拟机上完成的,现在需要用VMware的克隆功能克隆出其他虚拟机,在此,我们使用2个slave。
(1)关闭master虚拟机,然后选中master,菜单栏中的“虚拟机”—>“管理”—>“克隆”
(2)直接下一步:
(3)默认即可,下一步:
(4)选择“创建完整克隆”,下一步:
(5)虚拟机名称设置为slave1,即第一个slave,当然也可以设置为其他名称;选择位置后点击完成:
耐心等待克隆的完成。
按照同样的步骤再克隆一个虚拟机slave2。
最终,会有一个master和两个slave,如下:
8、最终的配置——集群配置
(1)每个节点(虚拟机)的IP配置。
在每个虚拟机上打开一个终端,输入:
sudogedit/etc/hosts,即可打开hosts文件,进行如下的IP地址配置。
当然,IP地址也可以是别的,是要保证是局域网的IP地址即可。
注意:
每个虚拟机上的hosts文件都是一样的配置。
(2)修改hostname文件。
此文件中存放的时本虚拟机的名称,默认的名称是ubuntu,而上一步设定的每个IP对应的虚拟机名分别是master、slave1和slave2,所以我们需要修改hostname文件内容,使其为每个虚拟机的名称。
在每个虚拟机上打开一个终端,输入:
sudogedit/etc/hostname,即可打开hostname文件,输入各自的主机名称。
修改后hostname文件后,关机重启各个虚拟机,就会看到每个虚拟机的名称发生了改变,如下:
(3)修改每个虚拟机的IP地址。
注意这里跟第
(1)部设定IP地址的区别。
(1)中设置的IP是我们希望的每个虚拟机的IP,但实际中每个主机的IP并不是这样的,在终端输入:
ifconfig,可以查看每个虚拟机的实际ip地址,如下:
可以看出每个虚拟机的实际ip分别为:
master192.168.161.129
salve1192.168.161.130
slave2192.168.161.131
跟我们设定的ip地址不一样。
问题:
为什么我们要自己设定每个虚拟机的ip,不能直接用各自实际的ip地址吗?
答:
因为每个虚拟机的ip地址是动态分配的,使用DHCP协议。
故而每次开机后,每个虚拟机的ip可能跟上次都不一样。
如果我们不在hosts文件中设定ip,那么每次开机后,我们都得去hosts文件中修改各个虚拟机的ip,这是相当麻烦的。
所以我们在hosts文件中设定固定的ip地址,然后在每次开机后使用命令:
sudoifconfigeth0192.168.1.101netmask255.255.255.0来设定IP,这样hosts文件中的ip和虚拟机实际的ip就一致了。
hosts文件中的ip地址的作用:
当在虚拟机master上使用sshslave1访问虚拟机slave1时,master首先检查自己的hosts文件,看看slave1对应的ip,然后通过ip去访问slave1。
这就要求hosts文件中的ip和虚拟机的实际ip必须一致,否则无法通信。
如果给个虚拟机设置固定的ip,那么可能导致虚拟机无法连接到Internet.
在每个虚拟机中打开一个终端,输入:
sudoifconfigeth0192.168.1.101netmask255.255.255.0
注意:
每个虚拟机的ip地址不一样,需要修改!
修改后的ip如下:
此时,使用虚拟机名称就访问各个虚拟机了,例:
在虚拟机master上通过ssh访问slave1:
不用输入密码,而且虚拟机的名称变化了!
使用命令exit退出登录。
(4)修改/hadoop-1.2.1/conf目录下的masters文件和slaves文件。
masters文件中:
master
注:
masters文件中的虚拟机是namenode所在节点。
slaves文件中:
slave1
slave2
注:
slaves文件中的虚拟机是datanode所在节点。
以上两个文件的修改,明确了谁是master,谁是slave。
(5)实现各个虚拟机之间的无密码访问。
之前我们设置过无密码访问,但那只是单个虚拟机上面的,对于多个虚拟机,每个虚拟机都需要生成自己的公钥和秘钥,然后将所有虚拟机的公钥整合到一起,作为一个公共的authorized_keys文件,使得每个虚拟机都具有这份authorized_keys文件,这样各个虚拟机间就可以无密码访问了。
在每个虚拟机上打开一个终端,进入.ssh目录下,如下:
rm–f*先删除.ssh下所有的文件
ssh-keygen–trsa–P“”生成新的公钥和秘钥
catid_rsa.pub>>authorized_keys将公钥复制到authorized_keys文件中
然后将所有虚拟机的authorized_keys中的内容整合到一起,如下:
作为每个虚拟机的authorized_keys.
至此,各个虚拟机可以无密码访问了。
9、运行Hadoop
(1)格式化hdfs文件系统。
在终端进入/hadoop-1.2.1/bin目录下,输入:
hadoopnamenode–format,如下:
当出现“…/hdfs/namehasbeensuccessfullyformatted”时,表示格式化成功。
(2)启动hadoop
在master虚拟机上,/hadoop-1.2.1/bin目录下运行:
start-all.sh,即可启动hadoop。
可能出现的问题:
slave2:
Hostkeyverificationfailed.
即主机密钥验证失败!
解决方法:
先在各个虚拟机上用ssh用户名@主机名登录一下其他各个虚拟机,这之后,再启动hadoop即可成功。
(3)检验是否成功启动Hadoop
在虚拟机master上终端输入jps,会显示如下:
即有:
JobTracker、NameNode、SecondaryNameNode
在slave上终端输入jps,会显示如下:
即有:
DataNode、TaskTracker
如果出现了跟上面一样的显示内容,则说明hadoop已经成功启动了。
10、安装eclipse
Hadoop安装完成后,就可以进行任务的提交、运行、获得结果。
但为了今后的开发的方便,需要安装eclipse。
因为虚拟机master是负责任务的分配的,所以只需在master上面安装eclipse即可,其他虚拟机不用安装。
(1)将eclipse-java-mars-1-linux-gtk-x86_64.tar.gz解压到用户的/Hadoop目录下,操作:
sudotar-zxvfeclipse-java-mars-1-linux-gtk-x86_64.tar.gz-C~/Hadoop
路径“~/Hadoop”中的~表示用户的根目录,即/home/lxl
(2)因为之前配置过jdk,即JAVA_HOME和CLASSPATH,故而现在可以直接运行eclipse了。
有两个种方式可以打开eclipse:
第一种:
在文件夹中直接双击eclipse图标,即可打开;
第二种:
在终端中输入:
eclipse,也可打开。
问题是,这两种方式打开后的eclipse均没有菜单栏,如下:
这不是你的问题,而是Ubuntu系统的问题,12.04以后的版本都有这个问题。
但我们需要菜单栏,怎么办呢?
(3)让eclipse显示菜单栏。
在/etc/profile文件中添加环境变量UBUNTU_MENUPROXY=0,如下:
exportUBUNTU_MENUPROXY=0
关机后再次启动,再次打开eclipse,就会看到菜单栏。
注意:
修改/etc/profile后,用source/etc/profile命令没有作用,必须得重启!
(4)建立eclipse和hadoop之间的连接。
将hadoop-eclipse-plugin-1.2.1.jar放入/eclipse/plugins下面,如果出现不能放入的情况,说明eclipse不可写,需要修改其权限,如下:
cdeclipse
sudochmod777plugins
此时即可放入。
(5)重新打开eclipse,菜单栏“window”—>“Preferences”,如下:
如果插件能用,则在左边会出现“HadoopMap/Reduced”,点击它,在右边选择hadoop的安装路径即可,点击“ok”。
(5)在master上面启动Hadoop,以便eclipse能够加载hadoop。
(6)菜单栏“window”—>“Perspective”—>“OpenPerspective”—>“Othes…”,如下:
打开后选择“Map/Reduce”,点击“ok”:
此时eclipse窗口中会出现“Map/ReduceLocations”,前面有黄色小象标示的那个,如下:
在“Map/ReduceLocations”框的空白处,点击右键,选择“NewHadooplocation…”,如下:
“Locationname”可以随便写,这个是eclipse中展示的hadoop名字,不重要,只是一个名称而已;
“Map/ReduceMaster”部分的跟/hadoop-1.2.1/conf/mapred-site.xml文件中的主机名和端口号相同;
“DFSMaster”部分跟/hadoop-1.2.1/conf/core-site.xml文件中的主机名和端口号相同;
“Username”即为Hadoop的用户名。
如下:
点击“Finish”后出现如下:
这表明已成功加载hadoop。
11、运行一个简单的Hadoop程序——WordCount.java
(1)在eclipse中新建一个工程,“File”—>“New”—>“Project…”
选择“Map/ReduceProject”,点击“Next”。
设置“Projectname”,点击“Next”
点击“Finish”。
(2)在刚才新建的项目上点击右键,“New”—>“Class”,如下:
类名写成WordCount,如下:
点击“Finish”,生成如下:
将hadoop安装目录/src/example/org/apache/hadoop/example/WordCount.java中的代码复制到此处,并删除第一行的“package…”。
(3)书写输入文件words.txt,并上传到HDFS文件系统。
书写words.txt文件(在虚拟机的任何位置均可书写),其内容可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hadoop 完全 分布式 详细 安装 过程