A-A+

从零开始搭建Hadoop-0.20.2平台的详细过程

2016年03月25日 Hadoop 暂无评论 阅读 704 views 次

说在前面的话

本来是之前写在我的另外一篇博客cndwzone.com的文章,时间是2014年6月份的,现在借用一下,由于当时对搭建Hadoop-0.20.2版本记录的比较详细,当然回过头看看,还是存在一些问题,比如SSH是为什么了什么,里面的密钥起到什么作用,当时没有深究,可能会对原理性的东西进行学习记录。

由于硬件限制,我在这里说的是hadoop伪分布式模式(Pseudo-Distributed Mode),其实网上已经有很多教程,不明白的地方可以查阅相关文章文档。

准备阶段

  • 宿主机一台
  • Vmware-9.0.2
  • ubuntu-12.04 hadoop-0.20.2 jdk-8u5-linux-i586-demos(现在想想Ubuntu吃内存太大,是个坑)

搭建流程概览

  1. 安装Ubuntu操作系统
  2. 在Ubuntu下创建hadoop用户组和用户
  3. 在Ubuntu下安装JDK
  4. 修改机器名
  5. 安装ssh服务
  6. 建立ssh无密码登录本机
  7. 安装hadoop
  8. 在单机上运行hadoop

通过概览,我们可以看到,我们只要逐个完成,一定会搭建好我们自己的Hadoop环境,不能否认的是这个过程可能会碰到各种各样的问题。问题是好是坏呢,如果在这过程中因为问题而停止学习此为坏,如果解决问题,那么就是你学习Hadoop进阶的垫脚石。

安装Ubuntu操作系统

  • 安装Vmware-9.0.2或其他版本
  • 新建虚拟机并配置
  • 安装系统

详细过程可参考相关文档,在这就不做详细介绍。

在Ubuntu下创建Hadoop用户组和用户

  • 安装Ubuntu时已经建立了一个用户,但是为了以后Hadoop操作,专门渐建立一个hadoop用户组和hadoop用户。

hadoop用户组

  • -->给hadoop用户添加权限,打开/etc/sudoers文件。

  sudo gedit /etc/sudoers

-->打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限。在

  root ALL=(ALL:ALL) ALL

的下面添加:

  hadoop ALL=(ALL:ALL) ALL

在Ubuntu下安装JDK

创建JDK安装目录

由于我使用的是VMware安装的Ubuntu系统,设置本地thisceshi文件夹共享到Ubuntu系统,指定的安装目录是:/usr/local/java。可是系统安装后在/usr/local下并没有java目录,这需要我们去创建一个java文件夹,
进入/usr/local文件夹,

cd /usr/local

创建java文件夹,

sudo mkdir /usr/local/java

安装jdk和配置

1、解压JDK到之前建好的java文件夹中,

sudo cp jdk-8u5-linux-i586-demos.tar.gz /usr/local/java

此时java目录中多了一个jdk1.6.0_30文件夹。

2、配置环境变量

(1)打开/etc/profile文件,

sudo gedit /etc/profile

(2)添加变量,

#set java environment export

JAVA_HOME=/usr/local/java/jdk1.6.0_30 export

JRE_HOME=/usr/local/java/jdk1.6.0_30/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

一般更改/etc/profile文件后,需要重启机器才能生效,在这里我们可以使用如下指令可使配置文件立即生效

source /etc/profile

(3)查看java环境变量是否配置成功,

java -version

显示如下:

java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) Client VM (build 20.5-b03, mixed mode, sharing)

但是在root下一切正常,在hadoop用户下就出现了问题,

程序“java”已包含在下列软件包中:

* gcj-4.4-jre-headless

* openjdk-6-jre-headless

* cacao

* gij-4.3

* jamvm

在终端中我们分别运行下面指令,

sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.6.0_30/bin/java 300

sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.6.0_30/bin/javac 300

问题解决。

修改机器名

当ubuntu安装成功时,我们的机器名都默认为:ubuntu ,但为了以后集群中能够容易分辨各台服务器,需要给每台机器取个不同的名字。机器名由 /etc/hostname文件决定。这是我开始是根据网上教程也给修改了,其实伪分布式搭建的时候,可以省了,不然还造成一些不必要的麻烦。

1、打开/etc/hostname文件,运行指令,

sudo gedit /etc/hostname

2、然后hostname中添加s15,即s15是当前用户别名。在这里需要重启系统后才会生效。

安装ssh服务

1、安装openssh-server

sudo apt-get install openssh-server

2、等待安装,即可。

ssh1

ssh2

ssh3

建立ssh无密码登录本机

在这里,我自己还是模模糊糊的。

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

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

ssh-keygen -t rsa -P ''(-P ‘’可去掉

网上教程中后面是双引号,我在执行出现错误,换成单引号,则可以执行。

ssh4

进入ssh,查看里面文件

hadoop@s15:~$ cd .ssh hadoop@s15:~/.ssh$ ls id_rsa id_rsa.pub

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

cat id_rsa.pub >> authorized_keys

3、登录localhost,

hadoop@s15:~/.ssh$ ssh localhost

Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-61-generic-pae i686)

* Documentation: https://help.ubuntu.com/

663 packages can be updated.

266 updates are security updates. Last login: Sat May 10 13:08:03 2014 from localhost

4、执行退出命令,

hadoop@s15:~$ exit 登出

Connection to localhost closed.

安装hadoop

  • 从共享文件夹thisceshi中将hadoop-0.20.2.tar.gz复制到安装目录 /usr/local/下
  • 解压hadoop-0.20.2.tar.gz
  • 将解压出的文件夹改名为hadoop
  • 将该hadoop文件夹的属主用户设为hadoop,

sudo chown -R hadoop:hadoop hadoop

  • 打开hadoop/conf/hadoop-env.sh文件
  • 配置conf/hadoop-env.sh(找到#export JAVA_HOME=…,去掉#,然后加上本机jdk的路径)

# The java implementation to use. Required.

export JAVA_HOME=/usr/local/java/jdk1.6.0_30

export HADOOP_HOME=/usr/local/hadoop

export PATH=$PATH:/usr/local/hadoop/bin

让环境立即生效,

source /usr/local/hadoop/conf/hadoop-env.sh

  • 打开conf/core-site.xml文件,编辑如下:
<?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>
  • 打开conf/mapred-site.xml文件,编辑如下:
<?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>
  • 打开conf/hdfs-site.xml文件,编辑如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<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>
  • 打开conf/masters文件,添加作为secondarynamenode的主机名,因为是伪分布式,只有一个节点,这里只需填写localhost就可以。
  • 打开conf/slaves文件,添加作为slave的主机名,一行一个。因为是伪分布式,只有一个节点,这里也只需填写localhost就可以。

在单机上运行hadoop

  • 进入hadoop目录下,格式化hdfs文件系统,初次运行hadoop时一定要有该操作,当你看到下图时,就说明你的hdfs文件系统格式化成功了。

Hadoop运行

到此,hadoop伪分布式环境搭建完成。

在搭建过程中可能会遇到各种问题,到时大家不用着急,可以谷歌,百度一下。解决问题的过程就是加深学习的过程。我当时都忘了花了多久才将环境搭建好,最初的时候,连最基本的指令也不懂,也不知道怎么运行。我在这里说出来就是想说,开始的一无所知不要害怕,慢慢来就好,在那么一刻你就会有所知,有所明白。之后的文章中会介绍在hadoop环境下运行WordCount,Hadoop中的HelloWorld。

给我留言

*

Copyright © If Coding 保留所有权利.   Theme  Ality   

用户登录