最近在做一个项目实验,用到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生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式。
1、创建ssh-key,,这里我们采用rsa方式
(注:回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub这两个文件是成对出现的)
2、进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的:
(完成后就可以无密码登录本机了。)
3、登录localhost:
(注:当ssh远程登录到其它机器后,现在你控制的是远程的机器,需要执行退出命令才能重新控制本地主机。)
4、执行退出命令,如下(也可不退出):
七、安装hadoop
我安装的是hadoop1.2.1,我也是按这个版本来安装的,所以就不多说了,直接粘贴过来(罪过。。。。)。
这里采用的hadoop版本是:hadoop-0.20.203(http://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的主机名,作为单机版环境,这里只需填写localhost就Ok了。
11、打开conf/slaves文件,添加作为slave的主机名,一行一个。作为单机版,这里也只需填写localhost就Ok了。
八、在单机上运行hadoop
1、进入hadoop目录下,格式化hdfs文件系统,初次运行hadoop时一定要有该操作:
当你看到下图时,就说明你的hdfs文件系统格式化成功了。
3、启动bin/start-all.sh,如图
4、检测hadoop是否启动成功,如图
如果有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker五个进程,就说明你的hadoop单机
配置过程中出现的一些注意事项(安装过程出现的就不考虑了,这里主要说下我在使用hadoop时候碰到的):
1.启动hadoop(bin/start-all.sh)之后,用jps查看,发现没有namenode或者是datanode,解决方案删除namenode下的记录,重新格式化,删除命令如下:
1)当namenode不存在时:sudo rm -rf /usr/local/hadoop/dfs/name
2)当datanode不存在时:sudo rm –rf /home/hdfs/data/current/VERSION
2.在安装openssh-server后时,在生成密钥时会出现多次操作,可以选择先删除对应的know_hosts的内容再操作一遍。
网上处理方法:
hadoop启动后jps没有namenode
一般都是由于两次或两次以上格式化NameNode造成的,有两种方法可以解决:
1.删除DataNode的所有资料
2.修改每个DataNode的namespaceID(位于/home/hdfs/data/current/VERSION文件中)或修改NameNode的namespaceID(位于/home/hdfs/name/current/VERSION文件中),
目的是两者一致。