Ubuntu下hadoop的安装与配置

 

版本:Ubuntu13.10 -64bit, hadoop1.0.4

 

       由于数据库课程作业的需要,最近在Ubuntu下配置了hadoop环境,在此作一下记录。

       首先要了解一下,hadoop是Apache基金会开发的一个分布式系统基础架构,通过它可以方便高效地对大数据进行处理。hadoop有两种运行模式:

       1. 单机模式

              hadoop只运行在一台电脑上,不与集群中的其它节点交互,优势在于方便调试代码。

       2. 集群分布模式

              这种模式下hadoop同时运行在多个节点上,处理能力相当强大,这也正是我们所需要的。不过,hadoop环境部署与维护相对复杂性更高。

 

假定我们现在要搭建一个只有三台主机的小集群,三台主机ip地址与分工如下:

       master:Namenode  192.168.1.170

       slave1:   Datanode    192.168.1.177

       slave2:   Datanode    192.168.1.179

 

 

hadoop单机模式

       配置集群分布模式,此阶段单机模式的配置在每一台电脑上必须基本保持一致。

 

1. 添加hadoop用户

       在三台电脑上添加相同的hadoop用户(这是hadoop集群的要求,否则各节点不能互相访问),创建用户的步骤如下:

       1.1 添加组



sudo addgroup hadoop



 

 

       1.2 添加用户



sudo adduser --ingroup hadoop hadoop



 

 

       1.3 编辑/etc/sudoers编辑文件,在root ALL=(ALL)ALL行下添加hadoop ALL=(ALL)ALL。如果不添加这行,haduser将不能执行sudo操作。

       添加用户成功之后,在终端中敲入”su - hadoop”切换到hadoop用户进行以下操作。

2. 安装jdk

       2.1 下载jdk-8uversion-linux-x64.rpm:http://www.oracle.com/technetwork/java/javase/downloads/index.html

       2.2 更改文件所有者,给文件jdk-8uversion-linux-x64.rpm添加可执行权限



chown hadoop:hadoop jdk-8uversion-linux-x64.rpm chmod +x jdk-8uversion-linux-x64.rpm



 

 

       2.3 执行安装



rpm -ivh jdk-8uversion-linux-x64.rpm



 

 

       2.4 增加JAVA_HOME环境变量



hadoop@slave02:~$ sudo vi /etc/profile



 

 

在最后面增加:



#set java environment export JAVA_HOME=/usr/java/jdk1.8.0 export CLASSPATH=.:$JAVA_HOME/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME



 

 

保存退出

最后使刚才的修改生效:



hadoop@slave02:~$ source /etc/profile



 

 

JAVA_HOME指明JDK安装路径,就是刚才安装jdk的路径,在/usr目录下找找就看到了。

       2.5 在命令行输入



hadoop@slave02:~$ java -version



 

 

出现如下版本信息即为jdk配置成功:

hadoop ubuntu 集群搭建 ubuntu部署hadoop_并行计算

 

3. 安装ssh

       3.1 一般系统是默认安装了ssh命令的。如果没有,或者版本比较老,则可以重新安装:



hadoop@slave02:~$ sudo apt-get install openssh-server



 

 

       3.2 设置local无密码登录

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

       (1) 创建ssh-key,这里采用rsa方式:



hadoop@slave02:~$ ssh-keygen -t rsa -P ""



 

 

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

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



hadoop@slave02:~$ cd ~/.ssh hadoop@slave02:~$ cat id_rsa.pub >> authorized_keys



 

 

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

       (3) 登录localhost:



hadoop@slave02:~$ ssh localhost



 

 

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

       (4) 执行退出命令:



hadoop@slave02:~$ exit



 

 

   

hadoop ubuntu 集群搭建 ubuntu部署hadoop_大数据_02


 

4. 安装hadoop

       4.1 假设hadoop-1.0.4.tar.gz在当前目录,将它复制到安装目录 /usr下:


hadoop@slave02:~$ sudo cp hadoop-1.0.4.tar.gz /usr


 

 

       4.2 解压hadoop-1.0.4.tar.gz:


hadoop@slave02:~$ cd /usrhadoop@slave02:~$ sudo tar -zxvf hadoop-1.0.4.tar.gz


 

 

       4.3 将解压出的文件夹改名为hadoop:


hadoop@slave02:~$ sudo mv hadoop-1.0.4 hadoop


 

 

       4.4 将该hadoop文件夹的属主用户设为hadoop:


hadoop@slave02:~$ sudo chown -R hadoop:hadoop hadoop


 

 

hadoop目录以及目录下文件子目录的权限:


hadoop@slave02:~$ sudo chmod -R 764 hadoop


 

 

5. 配置hadoop环境

进入usr/hadoop目录:

       5.1 配置conf/hadoop-env.sh

编辑conf目录下hadoop-env.sh,添加以下信息:


export JAVA_HOME=/usr/java/jdk1.8.0 #视你机器的java安装路径而定)export HADOOP_HOME=/usr/hadoop export PATH=$PATH:/usr/hadoop/bin


 

 

并且,让环境变量配置生效source:


hadoop@slave02:~$ source /usr/hadoop/conf/hadoop-env.sh


 

 

       5.2 配置conf/core-site.xml

编辑如下:

hadoop ubuntu 集群搭建 ubuntu部署hadoop_hadoop_03


 

       5.3 配置conf/mapred-site.xml

编辑如下:

hadoop ubuntu 集群搭建 ubuntu部署hadoop_hadoop ubuntu 集群搭建_04


 

       5.4 配置conf/hdfs-site.xml

编辑如下:

hadoop ubuntu 集群搭建 ubuntu部署hadoop_并行计算_05


 

       5.5 打开conf/masters文件,添加作为secondarynamenode的主机名,对于单机模式,这里只需填写 localhost 就好了。

       5.6 打开conf/slaves文件,添加作为slave的主机名,一行一个。对于单机模式,这里也只需填写 localhost就好了。

 

6. 启动测试

       6.1 格式化HDFS,执行如下命令:


hadoop@slave02:~$ hadoop namenode -fomat


 

 

hadoop ubuntu 集群搭建 ubuntu部署hadoop_hadoop_06


 

       6.2  启动start-all.sh:


hadoop@slave02:~$ start-all.sh


 

 

hadoop ubuntu 集群搭建 ubuntu部署hadoop_hadoop_07


 

       6.3 检测hadoop是否启动成功:


hadoop@slave02:~$ jps


 

 

   

hadoop ubuntu 集群搭建 ubuntu部署hadoop_大数据_08


 

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

       6.4 检查运行状态

所有的设置已完成,Hadoop也启动了,现在可以通过下面的操作来查看服务是否正常,在Hadoop中用于监控集群状态的Web界面:

http://localhost:50030/     - Hadoop 管理介面

http://localhost:50060/     - Hadoop Task Tracker 状态

http://localhost:50070/     - Hadoop DFS 状态

当Hadoop结束时,可以通过stop-all.sh脚本来关闭Hadoop的守护进程

 

 

 

hadoop集群分布模式

 

1. 修改主机名和host文件

       1.1 三台电脑分别修改主机名为master, slave1, slave2:


sudo vi /etc/hostname


 

 (注:要重启生效)

       1.2 打开本机host文件(三台电脑操作一致):


sudo vi /etc/hosts


 

 

在后面添加内容:


192.168.1.170 master192.168.1.177 slave1192.168.1.179 slave2


 

 

2. 配置master ssh无密码登录其它节点

       2.1 master公钥复制(这里都要复制到slave1和slave2,以slave1为例)


hadoop@master:~$ scp ~/.ssh/id_rsa.pub hadoop@slave1:~/.ssh/


 

 

然后输入密码回车。

       2.2 在每个节点电脑上添加master公钥


cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys


 

 

       2.3 master测试无密码登录其它节点


hadoop@master:~$ ssh slave1


 

 

如果不输入密码,直接提示登录成功则配置完成。

3. 配置hadoop集群环境(只在master上操作)

进入/usr/hadoop目录:

       3.1 修改conf/masters

hadoop ubuntu 集群搭建 ubuntu部署hadoop_hadoop ubuntu 集群搭建_09

       3.2 修改conf/slaves

hadoop ubuntu 集群搭建 ubuntu部署hadoop_hadoop ubuntu 集群搭建_10


 

4. 启动集群

       4.1 在master上面执行:


hadoop@master:~$ start-all.sh


 

       4.2 在各节点上通过jps命令查看相关进程是否启动。


jps


 

 

至此,hadoop环境配置已经完成,接下来尽情感受hadoop强大的运算能力吧!