Ubuntu 13.10 Hadoop集群安装记录

来源:互联网 发布:仰卧起坐板 品牌 知乎 编辑:程序博客网 时间:2024/04/28 10:26

前言

此文记录本人在Ubunt13.10环境下安装Hadoop集群的过程,其中每个步骤都是参考了前辈的经验,所以本文章不算原创,具体位置会给出参考文章的链接,但是从记录整个过程的角度,应该有一点原创的因素吧,whatever,我只是记录了我的过程,方便自己查阅,也方便其他人参考吧。

我使用了3台主机搭建集群,其中1台作为namenode其他两台为datanode,其ip和hostname分别如下:

172.20.53.251 Master

172.20.53.227 Slave1

172.20.53.217 Slave2

1. 安装Ubuntu13.10

最新版本已经是14.X了吧,之所以安装13.10(X86)纯属手误,既然已经装上了,就懒得改了。安装过程略,只记录下分区:
一共用了50G左右的空间安装,其中 /boot 200M(引导分区)   / 20G (根目录)    swap 8G(虚拟内存,物理内存*2) /home 20G (我的文档)
安装教程可参考:http://www.linuxidc.com/Linux/2013-10/91565p3.htm
推荐用U盘安装,非常方便啊!

2. 安装Java环境 

下载

首先登陆oracle的官网,下载对应版本的jdk,注意系统的位数。我当时下载的是 jdk-8u25-linux-i586.tar.gz

安装

sudo mkdir /usr/java       //创建目录sudo tar zxvf jdk-8u25-linux-i586.tar.gz -C /usr/java //将下载的文件解压到/usr/java目录下

改名

sudo mv /usr/java/jdk1.8.0_25 /usr/java/jdk1.8

配置环境变量

sudo gedit /etc/environment

内容如下:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin"export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport JAVA_HOME=/usr/java/jdk1.8

修改profile

 sudo gedit /etc/profile

添加如下内容:
#set java environmentJAVA_HOME=/usr/java/jdk1.8export JRE_HOME=/usr/java/jdk1.8/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

重启

重启之后,在终端里输入java和javac命令进行测试,如果正常说明java环境就安装成功了。

参考

java环境的配置,具体可以参考链接:http://www.cnblogs.com/fnng/archive/2013/01/30/2883815.html

3. 创建hadoop用户

如果你安装Ubuntu的时候不是用的hadoop用户,那么需要增加一个名为hadoop的用户,并将密码设置为hadoop

创建用户

sudo useradd hadoop

修改密码为hadoop,按提示输入两次密码

sudo passwd hadoop

给hadoop用户创建目录,方可登陆

sudo mkdir /home/hadoopsudo chown hadoop /home/hadoop

可考虑为 hadoop 用户增加管理员权限,方便部署,避免一些权限不足的问题:

sudo adduser hadoop sudo

最后注销当前用户,使用hadoop用户进行登陆。


4. 安装SSH server

Ubuntu默认安装了SSH client,还需要安装SSH server。

sudo apt-get install openssh-server

集群、单节点模式都需要用到SSH无密码登陆,首先设置SSH无密码登陆本机。

输入命令

ssh localhost

会有如下提示(SSH首次登陆提示),输入yes。

SSH首次登陆提示SSH首次登陆提示

然后按提示输入密码hadoop,这样就登陆到本机了。但这样的登陆是需要密码的,需要配置成无密码登陆。

先退出刚才的ssh,然后生成ssh证书:

exit                           # 退出 ssh localhostcd ~/.ssh                      # 如果没有该目录,先执行一次ssh localhostssh-keygen -t rsa              # 一直按回车就可以,生成的密钥保存为.ssh/id_rsacp id_rsa.pub authorized_keys

此时再用ssh localhost命令,就可以直接登陆了,如下图所示。

SSH无密码登陆

5. 配置网络

接下来需要设置所有主机的网络信息,需要在每台主机上修改两个文件。
/etc/hostname 中记录的是主机名,相当于是个网络代号。例如主节点设置为“Master”,其他的节点设置为“Slave1、Slave2...”。
sudo gedit /etc/hostname
 和 /etc/hosts 记录了所有集群的主机信息,包括主机名和ip地址
sudo gedit /etc/hosts
设置如下即可


如果不能通过图形界面设置静态ip及dns

那么只能通过命令行修改配置文件来设置了
sudo gedit /etc/network/interfaces
设置如下

然后重启网卡设置使其生效
sudo service network-manager restart

通过ping dns服务器等测试下设置是否正常就ok了。

6. SSH无密码登录节点

这个操作是要让Master节点可以无密码SSH登陆到Slave节点上。

首先生成 Master 的公匙,在 Master 节点终端中执行:

cd ~/.ssh                      # 如果没有该目录,先执行一次ssh localhostssh-keygen -t rsa              # 一直按回车就可以,生成的密钥保存为.ssh/id_rsa

Master 节点需能无密码 ssh 本机,这一步还是在 Master 节点上执行:

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

完成后可以使用 ssh Master 验证一下。接着将公匙传输到 Slave1 节点:

scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

scp时会要求输入Slave1上hadoop用户的密码(hadoop),输入完成后会提示传输完毕。

接着在 Slave1节点 上将ssh公匙保存到相应位置,执行

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

如果有其他 Slave 节点,也要执行 将公匙传输到 Slave 节点、在 Slave 节点上加入授权 这两步。

最后在 Master 节点上就可以无密码SSH到Slave1节点了。

ssh Slave1
其他节点也是如此。
之后可以在Master节点上用ssh Slave1等测试,如果都能无密码登录,那么就配置成功了。

7. 安装hadoop

下载

到hadoop官网下载即可,最新的版本是2.6.0。好多链接的下载速度很慢,多试几个,会有惊喜。

安装

sudo tar -zxvf hadoop-2.6.0.tar.gz -C /usr/local   # 解压到/usr/local中sudo mv /usr/local/hadoop-2.6.0/ /usr/local/hadoop      # 将文件名改为hadoopsudo chown -R hadoop:hadoop /usr/local/hadoop       # 修改文件权限

Hadoop解压之后即可使用,输入命令hadoop会显示命令的用法:

/usr/local/hadoop/bin/hadoop

配置

集群/分布式模式需要修改 etc/hadoop 中的5个配置文件,后四个文件可点击查看官方默认设置值,这里仅设置了正常启动所必须的设置项: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。

1, 文件 slave

cd /usr/local/hadoop/etc/hadoopvim slaves

将原来 localhost 删除,把所有Slave的主机名写上,每行一个。例如我只有一个 Slave节点,那么该文件中就只有一行内容: Slave1。

2, 文件 core-site.xml ,将原本的如下内容:

<property></property>

改为下面的配置。后面的配置文件的修改类似。

<property>    <name>fs.defaultFS</name>    <value>hdfs://Master:9000</value></property><property>    <name>hadoop.tmp.dir</name>    <value>file:/usr/local/hadoop/tmp</value>    <description>Abase for other temporary directories.</description></property>

3, 文件hdfs-site.xml,因为只有一个Slave,所以dfs.replication的值设为1。

<property>    <name>dfs.namenode.secondary.http-address</name>    <value>Master:50090</value></property><property>    <name>dfs.namenode.name.dir</name>    <value>file:/usr/local/hadoop/tmp/dfs/name</value></property><property>    <name>dfs.datanode.data.dir</name>    <value>file:/usr/local/hadoop/tmp/dfs/data</value></property><property>    <name>dfs.replication</name>    <value>1</value></property>

4, 文件mapred-site.xml,这个文件不存在,首先需要从模板中复制一份:

cp mapred-site.xml.template mapred-site.xml 

然后配置修改如下:

<property>    <name>mapreduce.framework.name</name>    <value>yarn</value></property>

5, 文件yarn-site.xml

<property>    <name>yarn.resourcemanager.hostname</name>    <value>Master</value></property><property>    <name>yarn.nodemanager.aux-services</name>    <value>mapreduce_shuffle</value></property>

配置好后,将 Master 上的 Hadoop 文件复制到各个节点上(虽然直接采用 scp 复制也可以正确运行,但会有所不同,如符号链接 scp 过去后就有点不一样了。所以先打包再复制比较稳妥)。

cd /usr/localsudo tar -zcf ./hadoop.tar.gz ./hadoopscp ./hadoop.tar.gz Slave1:/home/hadoop

Slave1上执行:

sudo tar -zxf ~/hadoop.tar.gz -C /usr/localsudo chown -R hadoop:hadoop /usr/local/hadoop

Slave2同上

启动

然后在Master节点上就可以启动hadoop了。

cd /usr/local/hadoop/bin/hdfs namenode -format       # 首次运行需要执行初始化,后面不再需要sbin/start-dfs.shsbin/start-yarn.sh

通过命令jps可以查看各个节点所启动的进程。

通过jps查看Master的Hadoop进程通过jps查看Master的Hadoop进程

可以看到Master节点启动了NameNodeSecondrryNameNodeResourceManager进程。

通过jps查看Slave的Hadoop进程通过jps查看Slave的Hadoop进程

Slave节点则启动了DataNodeNodeManager进程。

也可以通过Web页面看到查看DataNode和NameNode的状态,http://master:50070/

关闭Hadoop集群也是在Master节点上执行:

sbin/stop-dfs.shsbin/stop-yarn.sh


Hadoop安装参考教程如下:http://www.powerxing.com/install-hadoop-cluster-2-4-1/

我都是直接复制过来的。




0 0
原创粉丝点击