我安装的虚拟机版本是VMware Workstation 8.04,自己电脑上安装的有的话直接在虚拟机安装Linux操作系统,没有的话这里有我的一个百度云网盘虚拟机安装共享文件
http://pan.baidu.com/s/1c0Ie1cG
虚拟机的具体安装不再详细说明了。
本次采用的操作系统的Linux CentOS(Linux的一个版本),Hadoop集群并行计算最少需要三个节点,也就是虚拟机里面的三个操作系统,一个节点做namenode,另外两个节点做datanode(之所以称为“并行”的原因,datanode大于等于2个才能叫“并行”)
我目前安装版本是5.10
一个CentOS安装文件的下载地址:http://wiki.centos.org/Download
学Linux的应该都知道《鸟哥的Linux私房菜》吧,很经典,操作指导很详细,我安装的Linux CentOS就是参考这个来的,网上有电子书下载,随便搜一下就能找到,网页版的也有,具体安装参考地址http://vbird.dic.ksu.edu.tw/linux_basic/0157installcentos5.php
说明:这个不是虚拟机下的安装说明,网上也有虚拟机下的安装教程,大同小异,下载完安装镜像文件之后就是选择这个就像文件的事儿了。
安装说明:
在虚拟机中安装操作系统和安装完之后在虚拟机的操作系统的操作时会发现,鼠标在虚拟机中的操作系统和电脑中的实际Windows操作系统之间来回移动切换的时候必须按ctrl+alt和ctrl+G,VMware Tools的安装可能使鼠标在二者之间的来回移动切换随意自如。
具体安装流程如下:
1. 点击VMware最上面的“虚拟机”菜单选项,并选择下拉菜单中的“安装 VMware Tools”,这时VMware Tools镜像会自动加载
2. 复制VMwareTools-8.8.4-743747.tar.gz到桌面
3. 打开终端并输入命令cd Desktop转到桌面
4. 解压:tar xzvf VMwareTools-8.8.4-743747.tar.gz
5. 转到解压出来的目录:cd vmware-tools-distrib/
6. 执行安装命令:./vmware-install.pl
7. 接下来不断的按Enter,遇到选择“yes”或者“no”的一律输入“yes”
安装完成之后重新注销在登录即可看到效果
也可参考我的一篇CSDN博客:
http://blog.csdn.net/whaoxysh/article/details/17559529
虚拟机中安装完Linux CentOS之后应该是不能联网的,此时要进行网络参数的设置。
下图为虚拟机设置截图
l VMware提供了两个虚拟的网络连接,VMnet1和VMnet8,安装VMware后,系统中会出现这两个网络连接。如果没有这两个网络连接,说明VMware安装不正确。
l CentOS通过VMnet1或VMnet8进行网络通信。在CentOS中,“Virtual Machine Settings”--"Network Adapter"项目下,如果选择“Host-only:A private network shared with the host”,则通过VMnet1虚拟连接进行网络通信;如果选择“NAT:Used to share the host's IP address”,则通过VMnet8虚拟连接进行网络通信。
我的电脑是连接的无线,网络适配器截图如下
在无线网络连接处右键选择“属性”,由于我选择的是“NAT虚拟连接”,所以选择VMnet8,设置如图中所示
首次设置点击“确定”时,会有一个弹出窗口,此时要注意看,它会给本地虚拟机中的操作系统分配一个局域网IP地址段,相当于在自己电脑中的虚拟机中建立的一个“虚拟局域网”,弹出窗口中我被分配的网络的是192.168.0.1,可使用的网段应该是192.168.0.2—192.168.2.254,其中192.168.0.1为网关,192.168.0.255为广播地址,这两个不能用,由于我在虚拟机中安装了3个操作系统,所以就分配分配了192.168.0.2,192.168.0.3,192.168.0.4这三个IP,这些分配的IP可以在192.168.0.2—192.168.2.254这253个IP中任意选择。
不知道看明白没?给你例子,假如在点击“确定”时看到分配的网络不是192.168.0.1,而是192.168.137.1,那么可以分配给虚拟机的IP为192.168.137.2—192.168.137.254这253个。
这些知道之后,还要确保本地Windows操作系统中的虚拟机相关服务是开启的,如图,
没有开启的话,鼠标放在相应的服务上右键选择“开启”
l 之后就可以进入虚拟机中进行设置了,如图,打开“网络”
l 之后显示如下图:
l 双击“红下划线部分”,出现下图,由于上面提到我给三个虚拟机分配的IP地址依次为192.168.0.2,192.168.0.3,192.168.0.4,这是第一个虚拟机,分配的地址是192.168.0.2,子网掩码一律填写255.255.255.0,默认网关就是上面提到的“虚拟局域网”的网关192.168.0.1
l 进行网络设置的“DNS”设置项,如图,其中主机名自己随意定,但要记得,后边会用到,主DNS(P)填写网关192.168.0.1即可
这些设置完之后选择网络设置的“设备”设置项,如下图,点击“激活”
l 配置完之后应该就在自己的电脑上的虚拟机中建立了一个由三个虚拟机组成的“虚拟局域网”了。
说明
l 三个虚拟机中都要安装JDK,Hadoop只需在第一个虚拟机(这个虚拟机为NameNode,即名称节点)上安装,安装完并配置之后在Shell终端用命令直接拷贝到另外两个虚拟机上即可。
l JDK和Hadoop安装包我都存放在了虚拟机操作系统中的/usr/java目录中,安装是在Shell终端输入命令进入此目录,并输入安装命令,安装之后的会在此目录生成一个安装之后的文件。
l 把安装文件拷贝到用户目录 例如:/usr/java目录下
l 解压文件 : tar -xzvf jdk-7u10-linux-i586.tar.gz , 解压后,在/usr/java目录下就会生成一个新的目录jdk1.7.0_10,该目录下存放的是解压后的文件。 至此,安装工作基本完成。
注意:如果下载的文件是rpm 格式的话,可以通过下面的命令来安装: rpm -ivh jdk-7u10-linux-i586.rpm
配置环境变量有以下2种方式:
1. 修改.bashrc文件或者.bash_profile文件,在文件中加入以下语句:
export JAVA_HOME=/usr/java/jdk
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
2. 修改.profile文件 (推荐此种方式,这样其他程序也可以友好的使用JDK了)
文件位置:/etc/profile
打开profile,在文件中找到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC,并改为下面形式:
export JAVA_HOME=/usr/java/jdk
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
让环境变量生效
1) 执行配置文件令其立刻生效
source /etc/profile
2) 之后执行以下命令验证是否安装成功
java -version
如果出现下面的信息,则表示安装成功
说明
1. 本次安装配置全都在Linux CentOS的root权限下进行操作,没有在虚拟机中新建专门账户。
2. 这里的文件配置会用到Linux中的Vi编辑器,最好先熟悉一下编辑器的操作。
操作可参考《鸟哥的Linux私房菜》:http://vbird.dic.ksu.edu.tw/linux_basic/0310vi_2.php
Hadoop的安装配置我主要也是参考dataguru的视频来的,hadoop的安装版本和视频保持一致,版本为hadoop0.20.2,下载地址:
http://archive.apache.org/dist/hadoop/common/hadoop-0.20.2/
1. hadoop0.20.2的解压安装。在Shell终端中输入命令进入hadoop0.20.2压缩包所在目录,之后输入安装命令 :tar xzvf hadoop-0.20.2.tar.gz
2. 配置hosts文件。配置目录/etc之下名称为hosts的文件,如图所示,加入红线标注的两行,具体就是把另外两个充当dataNode的虚拟机节点的IP地址和主机名称加入进来,其功能类似于DNS服务器的地址解析功能。
3. 配置ssh免密码连接。(三台虚拟机都要进行此操作)进入Shell终端输入命令ssh-keygen –t rsa在各个虚拟机节点中生成ssh密钥对,目的是使得各个节点免密码进行彼此ssh连接,具体如图,初次操作时仅生成id_rsa和id_rsa.pub两个文件,输入命令cp id_rsa.pub authorize_keys进行拷贝,由于我的电脑上之前进行过这些操作,所以红线标注部分和初次操作不一样。之后,打开生成文件存放的目录,并用文本编辑器打开authorized——keys文件,将三台虚拟机中的这个文件拷贝到同一个文件里,之后将包含这三个虚拟机密钥对信息的authorized——keys文件分别拷贝到本目录下,并覆盖原有的authorized——keys,这样,每台虚拟机就拥有者三个虚拟机的ssh密钥对信息了。
4. 在NameNode名称节点上修改配置文件。Shell终端中输入命令进入hadoop文件安装目录,修改conf目录下的hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、masters、slaves这六个文件,其中masters、slaves的配置为masters中写入作为NameNode的虚拟机名称,slaves写入作为dataNode的另外两个虚拟机的名称,另外四个文件hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml的具体操作为:Shell终端输入命令进入相应的conf目录,用命令vi+文件名打开相应的文件进行修改,配置分别截图如下(图中相应的具体含义不做具体说明了,三言两语估计也说不清,可以自己在网上查)
修改hadoop-env.sh配置文件
修改core-site.xml配置文件
注:fs.default.name NameNode的IP地址和端口
修改hdfs-site.xml配置文件
修改mapred-site.xml配置文件
5. 复制NameNode节点的hadoop-0.20.2配置。向另外两个dataNode节点复制NameNode节点的hadoop-0.20.2配置,例如从我的主机名为localhost1.localdomain的主机复制hadoop-0.20.2到主机名为localhost2.localdomain的主机的/usr/java目录下的命令是:
scp –r hadoop-0.20.2 localhost2.localdomain:/usr/java
6. 格式化文件。Shell终端输入命令进入hadoop的解压目录中的bin文件夹,输入命令:hadoop namenode –format,之后仔细观察是否有successfullyformatted,有就出现说明格式化成功。格式化信息版本存储在hadoop的解压目录中的/tmp/hadoop-root/dfs/name/current/VERSION
7. 启动hadoop。这些配置完之后应该可以在Shell终端中进入hadoop安装目录下的bin文件夹,并通过start-all.sh和stop-all.sh启动和停止hadoop了。
8. 查看运行状态。启动之后,在Shell终端中进入不同节点的jdk安装目录中的bin文件夹,输入指令jps就可以查看守护进程的运行状态。
步骤7、8执行之后的效果如下图
另外提供两个详细介绍配置的英文网址
单点伪分布配置:http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/
完全分布配置:http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/