Ubuntu14 04+hadoop2 5 2完全分布式集群搭建

               

1.ubuntu创建新用户并增加管理员权限(所有主机

$是普通管员,#是系统管理员,在Ubuntu下,root用户默认是没有密码的,因此也就无法使用(据说是为了安全)。想用root的话,得给root用户设置一个密码:
sudo passwd root
然后登录时用户名输入root,再输入密码就行了。
ubuntu建用户最好用adduser,虽然adduser和useradd是一样的在别的linux糸统下,但是我在ubuntu下用useradd时,并没有创建同名的用户主目录。
例子:adduser user1
这样他就会自动创建用户主目录,创建用户同名的组。
[email protected]:~# sudo adduser aboutyun
[sudo] password for xx:
输入xx用户的密码,出现如下信息
正在添加用户"aboutyun"…
正在添加新组"aboutyun" (1006)…
正在添加新用户"aboutyun" (1006) 到组"db"…
创建主目录"/home/aboutyun"…
正在从"/etc/skel"复制文件…
输入新的 UNIX 口令:
重新输入新的 UNIX 口令:
两次输入db的初始密码,出现的信息如下
passwd: password updated successfully
Changing the user information for db
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Full Name []:等信息一路回车
这个信息是否正确? [Y/n] y
到此,用户添加成功。如果需要让此用户有root权限,执行命令:
[email protected]:~# sudo vim /etc/sudoers
修改文件如下:
# User privilege specification
root ALL=(ALL) ALL
aboutyun ALL=(ALL) ALL
保存退出,db用户就拥有了root权限。


2. 修改/etc/hostname 和/etc/hosts(所有主机)

172.16.77.15     aboutyun/123456      master
172.16.77.16     aboutyun/123456      slave1
172.16.77.17     aboutyun/123456      slave1
上面各列分别为IP、user/passwd、hostname

下面是master的修改:通过命令
sudo vim /etc/hosts
Ubuntu14 04+hadoop2 5 2完全分布式集群搭建

下面修改hostname
sudo vim /etc/hostname

Ubuntu14 04+hadoop2 5 2完全分布式集群搭建
修改主机名重启后生效。
上面hosts都一样,只不过hostname有所差别。

3、打通master到slave节点的SSH无密码登陆
3.1 安装ssh
一般系统是默认安装了ssh命令的。如果没有,或者版本比较老,则可以重新安装:
sudo apt-get install ssh

3.2

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


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

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


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

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


  1. scp ~/.ssh/id_rsa.pub [email protected]:/home/aboutyun/

scp时会要求输入slave1上aboutyun用户的密码,输入完成后会提示传输完毕。

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


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

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

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


  1. ssh Slave1
4.安装jdk(这里以.tar.gz版本,64位系统为例)

4.1.有安装包直接解压
这里直接解压到了/usr/java/jdk1.7下面:
在/usr下并没有java目录,这需要我们去创建一个java文件夹 

cd /usr
sudo mkdir java
tar -xzf jdk-7u67-linux-x64.tar.gz          解压到了/usr/java/jdk1.7


4.2.无安装包需要下载

下载jdk

wget http://download.Oracle.com/otn-pub/java/jdk/7u67-b01/jdk-7u67-linux-x64.tar.gz?AuthParam=1412395049_5ee2894e196e935ec18e4b2a6236bf28

重命名

mv jdk-7u67-linux-x64.tar.gz\?AuthParam\=1412395049_5ee2894e196e935ec18e4b2a6236bf28 jdk-7u67-linux-x64.tar.gz

解压

tar -xzf jdk-7u67-linux-x64.tar.gz

4.3设置环境变量

环境变量分为用户变量和系统变量。

用户变量配置文件:~/.bashrc(在当前用户主目录下的隐藏文件,可以通过`ls -a`查看到)

系统环境配置文件:/etc/profile

用户变量和系统变量的配置方法一样,本文以配置用户变量为例。

编辑配置文件.bashrc:

vi .bashrc

在文件末尾追加:

# set java environmentexport JAVA_HOME=/usr/java/jdk1.7export JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

4.4使环境变量生效

source .bashrc

4.5验证

验证java是否安装成功。

$ java -versionjava version "1.7.0_67"Java(TM) SE Runtime Environment (build 1.7.0_67-b01)Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

5.关闭每台机器的防火墙
sudo ufw disable (重启生效)

6.hadoop安装

6.1、需要注意的问题
看不到进程大致有两个原因:
1.你的配置文件有问题。
对于配置文件,主机名,空格之类的这些都不要带上。仔细检查
2.Linux的权限不正确。
最常出问题的是core-site.xml,与hdfs-site.xml。

core-site.xml
  1.       <property>
  2.               <name>hadoop.tmp.dir</name>
  3.               <value>file:/home/aboutyun/tmp</value>
  4.                <description>Abase forother temporary directories.</description>
  5.       </property>
复制代码
说一下上面参数的含义,这里是hadoop的临时文件目录,file的含义是使用本地目录。也就是使用的是Linux的目录,一定确保下面目录
  1. /home/aboutyun/tmp
复制代码
的权限所属为你创建的用户。并且这里面我也要会变通,aboutyun,为我创建的用户名,如果你创建了zhangsan或则lisi,那么这个目录就会变为
  1. /home/zhangsan/tmp
复制代码
这里不熟悉,是因为对Linux的不熟悉的原因。这里在来张图:
注意:1和2对比。如果你所创建的tmp属于root,那么你会看不到进程。
Ubuntu14 04+hadoop2 5 2完全分布式集群搭建

hdfs-site.xml
同样也是:要注意下面,你是需要改成自己的用户名的

  <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/home/aboutyun/dfs/name</value>
       </property>
      <property>
              <name>dfs.datanode.data.dir</name>
              <value>file:/home/aboutyun/dfs/data</value>
       </property>

上面讲完,我们开始配置

6.2
hadoop集群中每个机器上面的配置基本相同,所以我们先在master上面进行配置部署,然后再复制到其他节点。所以这里的安装过程相当于在每台机器上面都要执行。

【注意】:master和slaves安装的hadoop路径要完全一样,用户和组也要完全一致

1、 解压文件
将第一部分中下载的
  1. tar zxvf hadoop-2.5.2_x64.tar.gz
复制代码
  1. mv hadoop-2.5.2  hadoop
复制代码

解压到/home/aboutyun路径下

2、 hadoop配置过程

配置之前,需要在master本地文件系统创建以下文件夹:
~/dfs/name
~/dfs/data
~/tmp
这里文件权限:创建完毕,你会看到红线部分,注意所属用户及用户组。如果不再新建的用户组下面,可以使用下面命令来修改:
sudo chown -R aboutyun:aboutyun ~/dfs/
sudo chown -R aboutyun:aboutyun ~/tmp
Ubuntu14 04+hadoop2 5 2完全分布式集群搭建
这里要涉及到的配置文件有7个:
~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh
~/hadoop-2.2.0/etc/hadoop/yarn-env.sh
~/hadoop-2.2.0/etc/hadoop/slaves
~/hadoop-2.2.0/etc/hadoop/core-site.xml
~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
~/hadoop-2.2.0/etc/hadoop/mapred-site.xml
~/hadoop-2.2.0/etc/hadoop/yarn-site.xml
以上文件默认不存在的,可以复制相应的template文件获得。

配置文件1:hadoop-env.sh
修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.7)
配置文件2:yarn-env.sh

修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.7)

配置文件3:slaves (这个文件里面保存所有slave节点)
Ubuntu14 04+hadoop2 5 2完全分布式集群搭建

配置文件4:core-site.xml
  1. <configuration>
  2.        <property>
  3.                 <name>fs.defaultFS</name>
  4.                 <value>hdfs://master:8020</value>
  5.        </property>
  6.        <property>
  7.                 <name>io.file.buffer.size</name>
  8.                 <value>131072</value>
  9.         </property>
  10.        <property>
  11.                <name>hadoop.tmp.dir</name>
  12.                <value>file:/home/aboutyun/tmp</value>
  13.                <description>Abase for other temporary   directories.</description>
  14.        </property>
  15.         <property>
  16.                <name>hadoop.proxyuser.aboutyun.hosts</name>
  17.                <value>*</value>
  18.        </property>
  19.        <property>
  20.                <name>hadoop.proxyuser.aboutyun.groups</name>
  21.                <value>*</value>
  22.        </property>
  23. </configuration>

复制代码


配置文件5:hdfs-site.xml
  1. <configuration>
  2.        <property>
  3.                 <name>dfs.namenode.secondary.http-address</name>
  4.                <value>master:9001</value>
  5.        </property>
  6.      <property>
  7.              <name>dfs.namenode.name.dir</name>
  8.              <value>file:/home/aboutyun/dfs/name</value>
  9.        </property>
  10.       <property>
  11.               <name>dfs.datanode.data.dir</name>
  12.               <value>file:/home/aboutyun/dfs/data</value>
  13.        </property>
  14.        <property>
  15.                <name>dfs.replication</name>
  16.                <value>1</value>
  17.         </property>
  18.         <property>
  19.                  <name>dfs.webhdfs.enabled</name>
  20.                   <value>true</value>
  21.          </property>
  22. </configuration>

复制代码


配置文件6:mapred-site.xml
  1. <configuration>
  2.           <property>                                                                  <name>mapreduce.framework.name</name>
  3.                 <value>yarn</value>
  4.            </property>
  5.           <property>
  6.                   <name>mapreduce.jobhistory.address</name>
  7.                   <value>master:10020</value>
  8.           </property>
  9.           <property>
  10.                 <name>mapreduce.jobhistory.webapp.address</name>
  11.                 <value>master:19888</value>
  12.        </property>
  13. </configuration>

复制代码



配置文件7:yarn-site.xml
  1. <configuration>
  2.         <property>
  3.                <name>yarn.nodemanager.aux-services</name>
  4.                <value>mapreduce_shuffle</value>
  5.         </property>
  6.         <property>                                                                
  7. <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
  8.                <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  9.         </property>
  10.         <property>
  11.                <name>yarn.resourcemanager.address</name>
  12.                <value>master:8032</value>
  13.        </property>
  14.        <property>
  15.                <name>yarn.resourcemanager.scheduler.address</name>
  16.                <value>master:8030</value>
  17.        </property>
  18.        <property>
  19.             <name>yarn.resourcemanager.resource-tracker.address</name>
  20.              <value>master:8031</value>
  21.       </property>
  22.       <property>
  23.               <name>yarn.resourcemanager.admin.address</name>
  24.                <value>master:8033</value>
  25.        </property>
  26.        <property>
  27.                <name>yarn.resourcemanager.webapp.address</name>
  28.                <value>master:8088</value>
  29.        </property>
  30. </configuration>

复制代码

3、复制到其他节点
上面配置完毕,我们基本上完成了90%了剩下就是复制。我们可以把整个hadoop复制过去:使用如下命令:
  1. sudo scp -r /home/aboutyun/hadoop [email protected]:~/
复制代码
4.配置环境变量
第一步:
  1. vi /etc/environment
复制代码
第二步:添加如下内容:记得如果你的路径改变了,你也许需要做相应的改变。
Ubuntu14 04+hadoop2 5 2完全分布式集群搭建

红框中改为“/home/aboutyun/hadoop/bin:/home/aboutyun/hadoop/sbin:
5、启动验证

5.1 启动hadoop
格式化namenode:
  1. hdfs namenode –format
复制代码
或则使用下面命令:
  1. hadoop namenode format
复制代码

启动hdfs:
  1. start-dfs.sh
复制代码

此时在master上面运行的进程有:
namenode
secondarynamenode

slave节点上面运行的进程有:datanode

启动yarn:
  1. start-yarn.sh
复制代码
我们看到如下效果:
master有如下进程:
Ubuntu14 04+hadoop2 5 2完全分布式集群搭建 

slave1有如下进程
Ubuntu14 04+hadoop2 5 2完全分布式集群搭建 
此时hadoop集群已全部配置完成!!!
【注意】:而且所有的配置文件<name>和<value>节点处不要有空格,否则会报错!
然后我们输入:(这里有的同学没有配置hosts,所以输出master访问不到,如果访问不到输入ip地址即可)
  1. http://master:8088/
复制代码