设为首页 收藏本站
查看: 753|回复: 0

[经验分享] 安装单机Hadoop系统

[复制链接]

尚未签到

发表于 2015-7-13 10:55:18 | 显示全部楼层 |阅读模式



  胖叔提醒~转发请注明文章出处: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”。
DSC0000.jpg

图1 VMware workstation主页面

  在选择创建一个新的虚拟机后,会弹出如图2所示的对话框,我们选择“Typical”的方式进行安装:
DSC0001.jpg

图2选择安装方式

  在点击next之后,会弹出一个对话框,让用户选择安装的方式,因为我们是从网上下载到的镜像,所以我们会选择用第二种方式进行安装,在Installer disc image file中选择已经从网上下载到的镜像,然后进行安装(如图3所示)。
DSC0002.jpg

图3选择一个镜像

  在这里我们将为虚拟机设置机器名,用户名以及密码,如图4所示。
DSC0003.jpg

图4设置机器名用户名以及密码

  接下来,一直用默认选项安装,最后出来图5的界面,然后选择finish完成配置,至此我就完成了对镜像的导入以及设置。
DSC0004.jpg

图5完成镜像的导入以及设置

  下面的VMware会自动安装之前加载进来的iso文件,为了减少等待的时间,待安装完系统后,我选择跳过语言的安装,如图6所示,点击skip。
DSC0005.jpg
图6跳过语言安装

  接下来就等待系统安装完,紧接着安装完成后,登陆系统,然后把之前下载的hadoop与jdk的安装文件拷贝到Ubuntu中,图7所示。
DSC0006.jpg
图7拷贝安装文件到Ubuntu中

  至此,Ubuntu就安装完了。
1.3.2解压与配置
  紧接着下面就是安装这两个文件,可以分成两个步骤:第一步是解压文件到指定的文件夹,第二步是配置环境变量。
  (1)解压文件
  首先,解压jdk文件,先打开中端,然后按照图8的指令来:
DSC0007.jpg
图8解压jdk

  图8的意思是,在usr目录下新建一个文件夹java,然后将jdk安装到这个文件夹下。由于我下载的是bin文件,对于该类文件,直接在命令行中输入路径就可以了,但是要在目标文件夹中输入该路径。除此之外,因为我们是在usr目录下操作,作为普通用户是没有这个权限来创建文件夹的,所以要在前面加上sudo关键词,获取root权限。
  在解压完jdk后,紧接着应该解压hadoop文件了。首先要回到~目录下,然后可以新建一个文件夹hadoop_installs,然后将下载的hadoop的tar包解压到这个文件夹下面。我会用到下面的指令(如图9所示):
DSC0008.jpg
图9解压hadoop的jar包

  至此,两个文件已经全部解压了,下面要做的就是配置环境变量。
  (2)配置环境变量
  配置环境变量后才能系统才能知道已经装了jdk以及hadoop,并且方便的使用指令。一共要配置这些文件:
  ~/.bashrc系统环境变量的设置;
  hadoop/conf/hadoop-evn.shHadoop环境变量设置;
  hadoop/conf/core-site.xml主要完成NameNode的IP和端口设置;
  hadoop/conf/hdfs-site.xml主要完成HDFS的数据块副本等参数设置;
  hadoop/conf/mapred-site.xml主要完成JobTracker IP和端口设置;
  有的地方要求在单机安装情况下,需要对masterslaves两个文件设置,但是在我安装的1.04版本中,这两个文件默认已经写入localhost,所以不需要再设置。
  下面一个一个文件修改,首先来看.bashrc文件,使用图10所示的指令利用gedit来打开该文件,要加sudo,否则不能修改:
DSC0009.jpg
图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。
DSC00010.jpg
图11编辑.bashrc文件,配置环境变量

  至此,环境变量已经配好了一部分,这个时候,在控制台输入java –version会显示当前jdk的版本号,如果输入hadoop也会给出正确的提示。下面,我们还要再改一些文件,这些文件在hadoop安装文件下的conf目录下面:
  首先来修改hadoop-env.sh来对Hadoop环境变量设置,打开的方式还是使用sudo gedit指令,在图12中修改少许内容就可以了,可以看到有一行是export JAVA_HOME,在修改之前,这一行是被注释掉的,所以只要把#去掉,然后在等于号之后,添上自己的jdk安装路径就可以了。
DSC00011.jpg
图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所示:
DSC00012.jpg
图13打开编辑core-site.xml

  根据官方文档的内容,要将下面的内容添加到core-site文件中,
  
  fs.default.name
  hdfs://localhost:9000
  
  
  下面图14给出在core-site.xml文件中的何处添加。
DSC00013.jpg
图14完成NameNode的IP和端口设置

  紧接着,配置hdfs-site.xml,根据官方文档,将下面的内容添加进图15中所示的位置。
  
  dfs.replication
  1
  
DSC00014.jpg

图15完成HDFS的数据块副本等参数设置

  最后,配置mapred-site.xml文件,根据官方文档,将下面的内容添加进图16中所示的位置。
  
  mapred.job.tracker
  localhost:9001
  
DSC00015.jpg
图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-keyen –t -rsa
  然后一直按回车键,就会按照默认的选项将生成的秘钥对保存在.ssh/id_rsa文件中,如图17所示。
DSC00016.jpg
图17将秘钥对保存在.ssh/id.rsa文件中

  下面进入.ssh目录,执行如下命令:
  $sudo cp id_rsa.pub authorized_keys
  如图18所示,完成刚刚的操作,其中id_rsa 和id_rsa.pub,是一个公钥和一个私钥文件。
DSC00017.jpg
图18复制操作

  下面就是看看能不能用ssh无密码的连接了,可以尝试连接本地主机,也就是用ssh localhost来做测试,如图19所示。
DSC00018.jpg
图19测试本地连接

  可是从上图中看到,这个时候不能连,这是什么原因呢?查了一下,大多数情况下,是因为ssh没安装,这个时候,可以用apt-get指令安装ssh,如图20所示。
DSC00019.jpg
图20安装ssh

  在安装之后,再次连接就没问题了。至此整个hadoop安装到此结束。下面将讲述如何运行hadoop,并跑一个小例子。
二、运行Hadoop
  本部分主要讲的是如何运行hadoop服务,并且跑一个小例子。首先来介绍一下如果运行hadoop。
2.1hadoop的运行
  (1)格式化分布式文件系统。使用如下命令进行格式化:
  $hadoop namenode -format
  图21是使用格式化命令后,控制台的输出,可以看到其中有一行是xxx has been successfully formatted,这就意味着格式化成功了。
DSC00020.jpg
图21格式化分布式文件系统

  (2)启动hadoop守护进程。启动守护进程的命令如下:
  $start-all.sh
  成功执行后将在本机上启动NameNode、DataNode、JobTracker、TaskTracker和Secondary NameNode五个新的Java进程。
  可是我再启动的时候,遇到图22所示的错误,说我没有权限去建立一些文件,因此,start-all.sh其实执行不起来。
DSC00021.jpg
图22启动守护进程出错

  后来我也查到了出错的原因,这是因为我没有获得hadoop安装目录的操作权限,那么使用下面的指令(图23所示)便可获得权限。
DSC00022.jpg
图23获得hadoop-1.0.4的操作权限

  然后再次执行start-all.sh就没有错了,可以看图24中,成功的启动了守护进程。
DSC00023.jpg
图24启动守护进程

  在启动之后,就可以查看新建的五个进程了,如图25所示,输入jps然后可以显示以下各进程信息则说明HDFS和MapReduce都已正常启动。
DSC00024.jpg
图25用JPS命令检查一下是否正常启动

  (3)停止Hadoop守护进程。最后需要停止Hadoop守护进程,命令如下:
  $stop-all.sh
  如图26所示,停止守护进程,控制台会给出如下显示。
DSC00025.jpg
图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中。
DSC00026.jpg
图27新建文件以及上传文件

  接下来就是执行自带的wordcount,要用到如下指令:
  $hadoop jar /home/hadoop/hadoop_installs/hadoop-1.0.4/hadoop-examples-1.0.4.jar wordcount testin testout
  其中testout为数据处理完成后的输出目录(需要注意的是执行之前out目录必须为空,或者不存在这个目录,否则会出错),默认存放在分布式系统用户的根目录下(如图28所示)。
DSC00027.jpg
图28成功执行wordcount

  那么如果要看输出结果怎么办,有两种方法,一种是直接查看分布式当中的文件,直接输入如下指令就可以了:
  $hadoop dfs –cat testout/*
  另外,用户也可以把输出文件从hadoop分布式文件系统复制到本地文件系统查看,如图29和30所示。
DSC00028.jpg
图29获取输出到本地

DSC00029.jpg
图30查看结果

  在输入cat output/*后,可以看到下面图31所示的结果,统计了很多词:
DSC00030.jpg
图31统计词数运行结果

  这里再查看一下程序运行后在Hadoop Web作业状态查看界面上的作业运行状态,如图32所示:
DSC00031.png
图32程序运行后在Hadoop Web作业状态查看界面上的作业运行状态


第一次实验到此结束!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-86243-1-1.html 上篇帖子: hadoop生态系统之hadoop核心的部署 下篇帖子: 《转载》hadoop cdh3u3 eclipse插件编译
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表