L
L

Hadoop安装(伪分布式)总结

申请的电脑还没批下,只得用现有的Laptop装上ubuntu12.04搭了一个伪分布式的Hadoop系统,部分安装过程至今尚未搞清,不过还好不影响正常的运行和程序调试

系统:ubuntu12.04 64位版 Hadoop1.0.3

以下转一篇写的算是很清楚的安装日志,不过在实际过程中还是出现了一堆问题,补充在最后

一. 在Ubuntu下创建hadoop用户组和用户;

1. 创建hadoop用户组;

1 sudo addgroup hadoop

如图:

**2. **创建hadoop用户;

1 sudo adduser -ingroup hadoop hadoop

如图:

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

1 sudo gedit ``/etc/sudoers

按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限。

在root   ALL=(ALL:ALL)   ALL下添加hadoop   ALL=(ALL:ALL)  ALL,

1 <font size="2" face="微软雅黑">hadoop&#160; ALL=(ALL:ALL) ALL</font>

如图:

三. 在Ubuntu下安装JDK

使用如下命令执行即可:

1 sudo apt-get ``install openjdk-6-jre

如图:

四. 修改机器名

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

**1. **打开/etc/hostname文件;

1 sudo gedit ``/etc/hostname

2. 将/etc/hostname文件中的ubuntu改为你想取的机器名。这里我取"dubin-ubuntu"。 重启系统后才会生效。

五. 安装ssh服务

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

安装openssh-server;

1 sudo apt-get ``install ssh openssh-server

这时假设您已经安装好了ssh,您就可以进行第六步了哦~

六、 建立ssh无密码登录本机

首先要转换成hadoop用户,执行以下命令:

1 su - hadoop

如图:

ssh生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式。

**1. **创建ssh-key,,这里我们采用rsa方式;

1 ssh``-keygen -t rsa -P ``&quot;&quot;

如图:

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

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

cd ~/.``ssh

cat id_rsa.pub &gt;&gt; authorized_keys

如图:

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

**3. **登录localhost;

1 ssh localhost

如图:

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

**4. **执行退出命令;

1 <font size="2" face="微软雅黑">exit</font>

七. 安装hadoop

我们采用的hadoop版本是:hadoop-0.20.203(http://www.apache.org/dyn/closer.cgi/hadoop/common/  ),因为该版本比较稳定。

**1. **假设hadoop-0.20.203.tar.gz在桌面,将它复制到安装目录 /usr/local/下;

1 sudo cp hadoop-0.20.203.0rc1.``tar``.gz ``/usr/local/

**2. **解压hadoop-0.20.203.tar.gz;

cd /usr/local

sudo tar -zxf hadoop-0.20.203.0rc1.``tar``.gz

**3. **将解压出的文件夹改名为hadoop;

sudo mv hadoop-0.20.203.0 hadoop

**4. **将该hadoop文件夹的属主用户设为hadoop,

sudo chown -R hadoop:hadoop hadoop

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

sudo gedit hadoop``/conf/hadoop-env``.sh

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

<font size="2" face="微软雅黑">export JAVA_HOME=/usr/lib/jvm/java-6-openjdk</font>

**7. **打开conf/core-site.xml文件;

sudo gedit hadoop``/conf/core-site``.xml

编辑如下:

&lt;?``xml version``=``&quot;1.0&quot;``?&gt;

&lt;?``xml-stylesheet type``=``&quot;text/xsl&quot; href``=``&quot;configuration.xsl&quot;``?&gt;

<font size="2" face="微软雅黑"></font>

<font size="2" face="微软雅黑">&lt;!-- Put site-specific property overrides in this file. --&gt;</font>

<font size="2" face="微软雅黑"></font>

&lt;``configuration``&gt;

&lt;``property``&gt;&#160;

&lt;``name``&gt;fs.default.name&lt;/``name``&gt;&#160;

&lt;``value``&gt;[hdfs://localhost:9000](9000)&lt;/``value``&gt;&#160;&#160;

&lt;/``property``&gt;&#160;

&lt;/``configuration``&gt;

**8. **打开conf/mapred-site.xml文件;

sudo gedit hadoop``/conf/mapred-site``.xml

编辑如下:

&lt;?``xml version``=``&quot;1.0&quot;``?&gt;

&lt;?``xml-stylesheet type``=``&quot;text/xsl&quot; href``=``&quot;configuration.xsl&quot;``?&gt;

<font size="2" face="微软雅黑"></font>

<font size="2" face="微软雅黑">&lt;!-- Put site-specific property overrides in this file. --&gt;</font>

<font size="2" face="微软雅黑"></font>

&lt;``configuration``&gt;&#160;

&lt;``property``&gt;&#160;&#160;

&lt;``name``&gt;mapred.job.tracker&lt;/``name``&gt;&#160;

&lt;``value``&gt;localhost:9001&lt;/``value``&gt;&#160;&#160;

&lt;/``property``&gt;&#160;

&lt;/``configuration``&gt;

**9. **打开conf/hdfs-site.xml文件;

sudo gedit hadoop``/conf/hdfs-site``.xml

编辑如下:

&lt;``configuration``&gt;

&lt;``property``&gt;

&lt;``name``&gt;dfs.name.dir&lt;/``name``&gt;

&lt;``value``&gt;/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2&lt;/``value``&gt;

&lt;/``property``&gt;

&lt;``property``&gt;

&lt;``name``&gt;dfs.data.dir&lt;/``name``&gt;

&lt;``value``&gt;/usr/local/hadoop/data1,/usr/local/hadoop/data2&lt;/``value``&gt;

&lt;/``property``&gt;

&lt;``property``&gt;

&lt;``name``&gt;dfs.replication&lt;/``name``&gt;

&lt;``value``&gt;2&lt;/``value``&gt;

&lt;/``property``&gt;

&lt;/``configuration``&gt;

10. 打开conf/masters文件,添加作为secondarynamenode的主机名,作为单机版环境,这里只需填写 localhost 就Ok了。

sudo gedit hadoop``/conf/masters

11. 打开conf/slaves文件,添加作为slave的主机名,一行一个。作为单机版,这里也只需填写 localhost就Ok了。

sudo gedit hadoop``/conf/slaves

八. 在单机上运行hadoop

**1. **进入hadoop目录下,格式化hdfs文件系统,初次运行hadoop时一定要有该操作,

cd /usr/local/hadoop/

bin``/hadoop namenode -``format

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

**3. **启动bin/start-all.sh

bin``/start-all``.sh

**4. **检测hadoop是否启动成功

<font size="2" face="微软雅黑">jps</font>

如果有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker五个进程,就说明你的hadoop单机版环境配置好了!

如下图:

基本上,我的Hadoop安装参考了以上日志的大部分,其中出现的问题解决如下:

1. 第一次安装时我的ubuntu系统存在一个用户,hadoop用户为后添加,结果在用户的权限上出了很多问题,始终无法解决,后来把ubuntu重装,hadoop设成唯一的用户,问题解决

2. 此日志中使用了open java JDK,其它很多日志提出使用java公司的JDK更好,我在最后的安装中使用了java的JDK7, openjdk为ubuntu自带,免安装,也基本不用配置,java jdk需要自行下载安装配置,比较繁琐,放在另一篇日志中详谈

3. Ubuntu下测试ssh时使用ssh localhost 命令,出现错误提示connect to host localhost port 22:Connection refused

造成这个错误的原因可能是ssh-server未安装或者未启动。ubuntu默认安装openssh-client,但是木有安装server

运行 ps -e | grep ssh,查看是否有sshd进程

如果没有,说明server没启动,通过 /etc/init.d/ssh -start 启动server进程,如果提示ssh不存在 那么就是没安装server

通过 sudo apt-get install openssh-server命令安装即可

4. jps命令无效

重启后解决

<

p>5. ssh 如有问题,基本上是要手动设置不同文件和文件夹的权限