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配置成功:
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
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 /usr hadoop@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
5.3 配置conf/mapred-site.xml
5.4 配置conf/hdfs-site.xml
5.5 打开conf/masters文件,添加作为secondarynamenode的主机名,对于单机模式,这里只需填写 localhost 就好了。
5.6 打开conf/slaves文件,添加作为slave的主机名,一行一个。对于单机模式,这里也只需填写 localhost就好了。
6. 启动测试
6.1 格式化HDFS,执行如下命令:
hadoop@slave02:~$ hadoop namenode -fomat
6.2 启动start-all.sh:
hadoop@slave02:~$ start-all.sh
6.3 检测hadoop是否启动成功:
hadoop@slave02:~$ jps
如果有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 master 192.168.1.177 slave1 192.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目录:
4. 启动集群
4.1 在master上面执行:
hadoop@master:~$ start-all.sh
4.2 在各节点上通过jps命令查看相关进程是否启动。
jps
至此,hadoop环境配置已经完成,接下来尽情感受hadoop强大的运算能力吧!