胖叔提醒~转发请注明文章出处:http://www.iyunv.com/njuduyu/articles/2987788.html
这学期学了hadoop,第一个实验是安装单机hadoop,这里记下来,以后再装的时候可以看,高手勿喷。
一、安装
本文中主要介绍的是安装单机Hadoop系统。在这一章主要介绍系统安装运行的情况,涵盖以下几个部分:安装环境、安装条件与准备、安装过程以及安装时候遇到的问题和解决方案。
1.1安装环境介绍
1.1.1实验机器的配置
1)处理器:64位四核i7处理器
2)操作系统:windows 7
3)硬盘:1T
1.1.2安装方式
本次实验准备在Linux系统下安装单机Hadoop系统,并选择使用虚拟机的方式安装。
1.2安装条件与准备
1.2.1条件
1)需要一个Linux系统的镜像文件,本文选择使用Ubuntu系统,版本选择为12.04,32位系统;
2)在1.1中我们提到,本文的系统是跑在虚拟机中的,因此我还需要一个虚拟机软件,本文选择使用VMware-workstation,版本是9.0.1;
3)系统和虚拟机是基础,这是因为hadoop要配置在系统上面。而这次实验的重点还是Hadoop,因此我还需要hadoop的安装文件,这里我选择hadoop的版本为1.0.4;
4)以上都准备好了,那我们还需要一个文件,就是jdk,这里我选择的版本是32位的6u43。
1.2.2准备
本节主要附上一些链接:
1)hadoop下载链接:http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-1.0.4/
2)jdk下载链接:http://www.oracle.com/technetwork/java/javase/downloads/index.html
1.3安装过程
1.3.1在虚拟机中安装Ubuntu
打开VMware workstation,如图1,在显示主界面后,选择“create a new virtual Machine”。
图1 VMware workstation主页面
在选择创建一个新的虚拟机后,会弹出如图2所示的对话框,我们选择“Typical”的方式进行安装:
图2选择安装方式
在点击next之后,会弹出一个对话框,让用户选择安装的方式,因为我们是从网上下载到的镜像,所以我们会选择用第二种方式进行安装,在Installer disc image file中选择已经从网上下载到的镜像,然后进行安装(如图3所示)。
图3选择一个镜像
在这里我们将为虚拟机设置机器名,用户名以及密码,如图4所示。
图4设置机器名用户名以及密码
接下来,一直用默认选项安装,最后出来图5的界面,然后选择finish完成配置,至此我就完成了对镜像的导入以及设置。
图5完成镜像的导入以及设置
下面的VMware会自动安装之前加载进来的iso文件,为了减少等待的时间,待安装完系统后,我选择跳过语言的安装,如图6所示,点击skip。
图6跳过语言安装
接下来就等待系统安装完,紧接着安装完成后,登陆系统,然后把之前下载的hadoop与jdk的安装文件拷贝到Ubuntu中,图7所示。
图7拷贝安装文件到Ubuntu中
至此,Ubuntu就安装完了。
1.3.2解压与配置
紧接着下面就是安装这两个文件,可以分成两个步骤:第一步是解压文件到指定的文件夹,第二步是配置环境变量。
(1)解压文件
首先,解压jdk文件,先打开中端,然后按照图8的指令来:
图8解压jdk
图8的意思是,在usr目录下新建一个文件夹java,然后将jdk安装到这个文件夹下。由于我下载的是bin文件,对于该类文件,直接在命令行中输入路径就可以了,但是要在目标文件夹中输入该路径。除此之外,因为我们是在usr目录下操作,作为普通用户是没有这个权限来创建文件夹的,所以要在前面加上sudo关键词,获取root权限。
在解压完jdk后,紧接着应该解压hadoop文件了。首先要回到~目录下,然后可以新建一个文件夹hadoop_installs,然后将下载的hadoop的tar包解压到这个文件夹下面。我会用到下面的指令(如图9所示):
图9解压hadoop的jar包
至此,两个文件已经全部解压了,下面要做的就是配置环境变量。
(2)配置环境变量
配置环境变量后才能系统才能知道已经装了jdk以及hadoop,并且方便的使用指令。一共要配置这些文件:
~/.bashrc:系统环境变量的设置;
hadoop/conf/hadoop-evn.sh:Hadoop环境变量设置;
hadoop/conf/core-site.xml:主要完成NameNode的IP和端口设置;
hadoop/conf/hdfs-site.xml:主要完成HDFS的数据块副本等参数设置;
hadoop/conf/mapred-site.xml:主要完成JobTracker IP和端口设置;
有的地方要求在单机安装情况下,需要对master和slaves两个文件设置,但是在我安装的1.04版本中,这两个文件默认已经写入localhost,所以不需要再设置。
| 下面一个一个文件修改,首先来看.bashrc文件,使用图10所示的指令利用gedit来打开该文件,要加sudo,否则不能修改:
图10编辑.bashrc文件
紧接着,把下面的内容复制到.bashrc文件的末尾,这段话的含义就是指出了文件的安装路径:
PATH=$PATH:$HOME/bin
export JAVA_HOME=/usr/java/jdk1.6.0_43
export HADOOP_INSTALL=/home/hadoop/hadoop_installs/hadoop-1.0.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_INSTALL/bin
export CLASSPATH=$JAVA_HOME/lib:.
| 其中值得说的是HADOOP_INSTALL,因为有的地方说这里应该写HADOOP_HOME,这里要说明,在hadoop1.0x版本以后,如果写HADOOP_HOME会提示一个warning,再网上查了一下,改成HADOOP_INSTALL就没有警告了具体的编辑可以参看图11。
图11编辑.bashrc文件,配置环境变量
至此,环境变量已经配好了一部分,这个时候,在控制台输入java –version会显示当前jdk的版本号,如果输入hadoop也会给出正确的提示。下面,我们还要再改一些文件,这些文件在hadoop安装文件下的conf目录下面:
首先来修改hadoop-env.sh来对Hadoop环境变量设置,打开的方式还是使用sudo gedit指令,在图12中修改少许内容就可以了,可以看到有一行是export JAVA_HOME,在修改之前,这一行是被注释掉的,所以只要把#去掉,然后在等于号之后,添上自己的jdk安装路径就可以了。
图12修改hadoop-env.sh文件
下面,就要来修改core-site.xml,hdfs-site.xml以及mapred-site.xml。我是参考http://hadoop.apache.org/docs/r1.0.4/single_node_setup.html这个网址中的建议,设置上面三个文件的,该网址是hadoop官方的一个文档,告诉怎么配置安装单节点的hadoop。
首先还是打开文件,先打开core-site.xml,如图13所示:
图13打开编辑core-site.xml
根据官方文档的内容,要将下面的内容添加到core-site文件中,
fs.default.name
hdfs://localhost:9000
|
下面图14给出在core-site.xml文件中的何处添加。
图14完成NameNode的IP和端口设置
紧接着,配置hdfs-site.xml,根据官方文档,将下面的内容添加进图15中所示的位置。
图15完成HDFS的数据块副本等参数设置
最后,配置mapred-site.xml文件,根据官方文档,将下面的内容添加进图16中所示的位置。
mapred.job.tracker
localhost:9001
|
图16完成JobTracker IP和端口设置
1.3.3配置ssh
在配置完上面的内容后,最后要实现的一步,也是必不可少的,这就是ssh,那么什么是ssh呢?这里给出一个简单的介绍:
SSH(Secure Shell),是建立在应用层和传输层基础上的安全协议。传统的网络服务程序,如FTP、POP和Telnet本质上都是不安全的;它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。
而SSH是目前较为可靠的、专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。SSH另一项优点是其传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、POP、PPP提供一个安全的登陆会话“通道”。
Hadoop使用SSH保证在远程管理Hadoop节点和节点间用户共享访问时的安全性。
下面,要做的就是免密码的ssh设置,这样以后登录连接的时候hadoop服务的时候,就不需要输入密码了。
还是一步一步的做,首先要输入如下指令
然后一直按回车键,就会按照默认的选项将生成的秘钥对保存在.ssh/id_rsa文件中,如图17所示。
图17将秘钥对保存在.ssh/id.rsa文件中
下面进入.ssh目录,执行如下命令:
$sudo cp id_rsa.pub authorized_keys
| 如图18所示,完成刚刚的操作,其中id_rsa 和id_rsa.pub,是一个公钥和一个私钥文件。
图18复制操作
下面就是看看能不能用ssh无密码的连接了,可以尝试连接本地主机,也就是用ssh localhost来做测试,如图19所示。
图19测试本地连接
可是从上图中看到,这个时候不能连,这是什么原因呢?查了一下,大多数情况下,是因为ssh没安装,这个时候,可以用apt-get指令安装ssh,如图20所示。
图20安装ssh
在安装之后,再次连接就没问题了。至此整个hadoop安装到此结束。下面将讲述如何运行hadoop,并跑一个小例子。
二、运行Hadoop
本部分主要讲的是如何运行hadoop服务,并且跑一个小例子。首先来介绍一下如果运行hadoop。
2.1hadoop的运行
(1)格式化分布式文件系统。使用如下命令进行格式化:
图21是使用格式化命令后,控制台的输出,可以看到其中有一行是xxx has been successfully formatted,这就意味着格式化成功了。
图21格式化分布式文件系统
(2)启动hadoop守护进程。启动守护进程的命令如下:
成功执行后将在本机上启动NameNode、DataNode、JobTracker、TaskTracker和Secondary NameNode五个新的Java进程。
可是我再启动的时候,遇到图22所示的错误,说我没有权限去建立一些文件,因此,start-all.sh其实执行不起来。
图22启动守护进程出错
后来我也查到了出错的原因,这是因为我没有获得hadoop安装目录的操作权限,那么使用下面的指令(图23所示)便可获得权限。
图23获得hadoop-1.0.4的操作权限
然后再次执行start-all.sh就没有错了,可以看图24中,成功的启动了守护进程。
图24启动守护进程
在启动之后,就可以查看新建的五个进程了,如图25所示,输入jps然后可以显示以下各进程信息则说明HDFS和MapReduce都已正常启动。
图25用JPS命令检查一下是否正常启动
(3)停止Hadoop守护进程。最后需要停止Hadoop守护进程,命令如下:
如图26所示,停止守护进程,控制台会给出如下显示。
图26停止守护进程
三、运行实例
上面的两个部分,第一部分介绍了安装,第二部分介绍了运行,最后第三部分,要介绍如何运行实例,首先还是先格式化分布式文件系统(为了保险起见),然后启动Hadoop守护进程。本部分要介绍的实例是,首先找到一组英文网页数据,然后在本机上运行Hadoop系统自带的WordCount可执行程序文件,并产生输出结果。
这里我取了两个英文网页:
Hadoop官网:http://hadoop.apache.org/
JDK官网:http://www.oracle.com/technetwork/java/javase/downloads/index.html
然后将这两个网页保存为htm文件在本地。
为了分析这两个文件,首先要在hadoop文件系统中建立一个文件夹,这里我建立的是testin,这个文件夹用来存放稍后要上传的文件。然后在本地建立一个input文件,input文件中放着从网上下载下来的两个网页。
在分布式文件系统中建立文件如图27所示,需要如下指令:
$hadoop dfs –mkdir /testin
| 然后,将本地文件夹input的内容,上传至文件系统中,用到如下指令:
$hadoop dfs –copyFromLocal /home/hadoop/input testin
| 如图27中第二条指令所示,意思就是将input中内容上传到testin中。
图27新建文件以及上传文件
接下来就是执行自带的wordcount,要用到如下指令:
$hadoop jar /home/hadoop/hadoop_installs/hadoop-1.0.4/hadoop-examples-1.0.4.jar wordcount testin testout
| 其中testout为数据处理完成后的输出目录(需要注意的是执行之前out目录必须为空,或者不存在这个目录,否则会出错),默认存放在分布式系统用户的根目录下(如图28所示)。
图28成功执行wordcount
那么如果要看输出结果怎么办,有两种方法,一种是直接查看分布式当中的文件,直接输入如下指令就可以了:
$hadoop dfs –cat testout/*
| 另外,用户也可以把输出文件从hadoop分布式文件系统复制到本地文件系统查看,如图29和30所示。
图29获取输出到本地
图30查看结果
在输入cat output/*后,可以看到下面图31所示的结果,统计了很多词:
图31统计词数运行结果
这里再查看一下程序运行后在Hadoop Web作业状态查看界面上的作业运行状态,如图32所示:
图32程序运行后在Hadoop Web作业状态查看界面上的作业运行状态
第一次实验到此结束!
|