hadoop环境搭建图文剖析

最近在做一个项目实验,用到LDA,结果发现单机跑不起来,所以就来学分布式了,搞了两天,参考的文档是:http://www.cnblogs.com/end/archive/2012/08/13/2636645.html

我发现了,能找到好的文档能事半功倍,我就感觉这个文档学的比较好,赞一个。里边有些内容直接借用过来了(学习搞了两天,在别的电脑又搞了两天,不想搞了,罪过。。。。),如有冒犯,阿弥陀佛。。。。

安装步骤: 
一、安装Linux操作系统
二、在Ubuntu下创建hadoop用户组和用户
三、在Ubuntu下安装JDK
四、修改机器名
五、安装ssh服务
六、建立ssh无密码登录本机
七、安装hadoop
八、在单机上运行hadoop


一、安装Linux操作系统 
我安装的是Ubuntu14.04的桌面版虚拟机,系统的安装请自行找相关参考文档。


二、在Ubuntu下创建hadoop用户组和用户 
创建用户组和用户,名称均为hadoop

1、创建hadoop用户组,如下

 

2、创建hadoop用户, 

 

3、给hadoop用户添加权限,打开/etc/sudoers文件, 


 这里也许会出现gedit不好用(那就老老实实用vi/vim吧)

按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限。在root  ALL=(ALL:ALL)   ALL下添加hadoop  ALL=(ALL:ALL)  ALL,如下图 

 

三、在Ubuntu下安装JDK

1.下载需要的jdk(在这个网址找到适合自己的版本就行),我的是jdk-7u79-linux-x64.gz

2.将该文件复制到你需要安装的文件目录下,并解压。

3.配置环境变量,将jdk的解压目录放到/etc/profile中(只需在后面添加即可),如下图


4. jdk安装完毕,如不够清晰,也可参考: http://weixiaolu.iteye.com/blog/1401786

四、修改机器名 
每当ubuntu安装成功时,我们的机器名都默认为:ubuntu,但为了以后集群中能够容易分辨各台服务器,需要给每台机器取个不同的名字。机器名由 /etc/hostname文件决定。
1
、打开/etc/hostname文件 

 

2、回车后就打开/etc/hostname文件了,将/etc/hostname文件中的ubuntu改为你想取的机器名。重启系统后才会生效。


五、安装ssh服务 
这里的ssh和三大框架:spring,struts,hibernate没有什么关系,ssh可以实现远程登录和管理,具体可以参考其他相关资料。
1
、安装openssh-server


操作完成后继续执行步骤六的第1步。


六、建立ssh无密码登录本机 
切换到hadoop用户下。

ssh生成密钥有rsadsa两种生成方式,默认情况下采用rsa方式。
1
、创建ssh-key,,这里我们采用rsa方式

 

(注:回车后会在~/.ssh/下生成两个文件:id_rsaid_rsa.pub这两个文件是成对出现的)

2
、进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的: 

 

(完成后就可以无密码登录本机了。)

3
、登录localhost 

 

(注:当ssh远程登录到其它机器后,现在你控制的是远程的机器,需要执行退出命令才能重新控制本地主机。)

4
、执行退出命令,如下(也可不退出):

 

七、安装hadoop 

我安装的是hadoop1.2.1,我也是按这个版本来安装的,所以就不多说了,直接粘贴过来(罪过。。。。)。

这里采用的hadoop版本是:hadoop-0.20.203http://apache.etoak.com/hadoop/common/hadoop-0.20.203.0/ ),因为该版本比较稳定。
1
、假设hadoop-0.20.203.tar.gz在桌面,将它复制到安装目录 /usr/local/下: 

 

2、解压hadoop-0.20.203.tar.gz,如图


解压后查看


3、将解压出的文件夹改名为hadoop

4、将该hadoop文件夹的属主用户设为hadoop,如图 

 

5、打开hadoop/conf/hadoop-env.sh文件 

切换到hadoop解压目录,使用vi conf/hadoop-env.sh

6、配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然后加上本机jdk的路径)

7、打开conf/core-site.xml文件,编辑如下:

Java代码  

<pre name="code" class="java"><?xml version="1.0"?>  
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  
<!-- Put site-specific property overrides in this file. -->  
  
<configuration>  
<property>    
  <name>fs.default.name</name>    
  <value>hdfs://localhost:9000</value>     
 </property>    
</configuration> 

8、打开conf/mapred-site.xml文件,编辑如下:

 Java代码  

<?xml version="1.0"?>  

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  
<!-- Put site-specific property overrides in this file. -->  
  
    <configuration>    
     <property>     
      <name>mapred.job.tracker</name>    
      <value>localhost:9001</value>     
     </property>    
    </configuration>   <span style="font-family: SimHei; background-color: rgb(255, 255, 255);">   </span>

9、打开conf/hdfs-site.xml文件,编辑如下:

 单机配置,这里副本也可只配置一台。

Java代码  

<configuration>  

<property>  
<name>dfs.name.dir</name>  
<value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value>  
</property>  
<property>  
<name>dfs.data.dir</name>  
<value>/usr/local/hadoop/data1,/usr/local/hadoop/data2</value>  
</property>  
<property>  
<name>dfs.replication</name>  
<value>2</value>  
</property>  
</configuration>  

10、打开conf/masters文件,添加作为secondarynamenode的主机名,作为单机版环境,这里只需填写localhostOk了。
11
、打开conf/slaves文件,添加作为slave的主机名,一行一个。作为单机版,这里也只需填写localhostOk了。

八、在单机上运行hadoop 
1
、进入hadoop目录下,格式化hdfs文件系统,初次运行hadoop时一定要有该操作: 

 

当你看到下图时,就说明你的hdfs文件系统格式化成功了。

3、启动bin/start-all.sh,如图 

 

4、检测hadoop是否启动成功,如图 


如果有NamenodeSecondaryNameNodeTaskTrackerDataNodeJobTracker五个进程,就说明你的hadoop单机

配置过程中出现的一些注意事项(安装过程出现的就不考虑了,这里主要说下我在使用hadoop时候碰到的):

1.启动hadoopbin/start-all.sh)之后,用jps查看,发现没有namenode或者是datanode,解决方案删除namenode下的记录,重新格式化,删除命令如下:

1namenode不存在时:sudo rm -rf /usr/local/hadoop/dfs/name

2datanode不存在时:sudo rm –rf /home/hdfs/data/current/VERSION

2.在安装openssh-server后时,在生成密钥时会出现多次操作,可以选择先删除对应的know_hosts的内容再操作一遍。


网上处理方法:

hadoop启动后jps没有namenode

一般都是由于两次或两次以上格式化NameNode造成的,有两种方法可以解决:

1.删除DataNode的所有资料

2.修改每个DataNodenamespaceID(位于/home/hdfs/data/current/VERSION文件中)或修改NameNodenamespaceID(位于/home/hdfs/name/current/VERSION文件中)

目的是两者一致。

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页