Hadoop部署

0 篇文章 0 订阅

1  安装环境

1.1 软件资源

软件名称用途说明
hadoop-1.0.3包含HDFS及MapReduce解压安装即可
hbase-0.94.0Hbase安装介质解压安装即可
zookeeper-3.3.5Zookeeper安装介质解压安装即可

1.2 硬件资源

服务器类型操作系统基础资源配置说明
虚拟机服务器Redhat5.6 64bitCpu :1颗4核共4台
内存:2G
本地磁盘:20G

1.3 部署规划

主机名数量用途说明
namnode共1台NameNode/Secondary NameNode/Jobtracker 
datanode1共3台Datanode/TacktTacker 
datanode2
datanode3

2  修改主机名

在各台虚拟机中修改主机名,将HOSTNAME改成你想修改的名称。如将namenode节点的主机名改为namenode,如下所示:

[root@namenode]# vi /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=namenode

3 修改host文件

编辑hosts文件,使各虚拟机角色映射至对应的IP地址。

[root@namenode]# vi /etc/hosts

127.0.0.1   localhost

10.2.0.248  namenode

10.2.0.249  datanode1

10.2.0.253  datanode2

4 配置NTP

Network TimeProtocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正,且可以由加密确认的方式来防止恶毒的协议攻击。

本环境以namenode作为NTP服务器,其余虚拟机作为NTP客户端,保证所有操作系统时间全部一致。

4.1 配置NTP服务器端

1.   修改配置文件,将对应行改为以下红色字体。

[root@namenode]#vi /etc/ntp.conf 

restrict default nomodify

2. 启动ntpd服务。

[root@namenode]# service ntpd start

3.   设置ntpd随机启动。

[root@namenode]# chkconfig ntpd on

4.2 配置NTP客户端

在除namenode除外的机器上用root用户配置定时服务,设置NTP客户端每一分钟同步一次时间。添加以下红色字体,保存。

[root@namenode]# crontab -u root –e

0-59 * * * * /usr/sbin/ntpdate namenode

5 安装及配置Java运行环境

 Hadoop运行环境依赖JAVA运行时,版本须为JDK1.6.x,最好使用SUNJDK

安装JDK(在每台机器执行)

创建JDK软件安装目录。

[root@namenode]# mkdir -p /java

在公司内网下载JDK

[root@namenode]#cd /java
[root@namenode]#wget http://lab.excellence.com.cn/download/develop/jdk-6u23-linux-x64.bin

授予可执行权限并安装

[root@namenode]# chmod +xjdk-1.6.0.23-linux-x64.bin
[root@namenode]# ./jdk-1.6.0.23-linux-x64.bin

设置Jdk环境变量(在每台机器执行)

编辑/etc/profile文件,设置JAVA_HOME,并添加进入CLASSPATH在文件尾部添加以下字体。

[root@namenode]#vi /etc/profile
JAVA_HOME=/java/jdk1.6.0_23

PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin

CLASSPATH=.:/java/jdk1.6.0_23/lib:/java/jdk1.6.0_23/jre/lib:$CLASSPATH

export JAVA_HOME CLASSPATH PATH

6 为Hadoop集群安装SSH

6.1 定义一个公共账号

对于Hadoop,所有节点上的账号应该有相同的用户名(本文档我们使用hadoop),对于安全的考虑,我们把这个用户设置为用户级别。它仅用于管理Hadoop集群。

[root@namenode]# useradd hadoop

设置用户密码,密码设置为hadoop

[root@namenode]#passwd hadoop 

6.2 生成SSH密钥对

使用namenode主节点上的ssh-keygen来生成RSA密钥对。

[root@namenode]# su – hadoop
[hadoop@namenode]$ mkdir .ssh
[hadoop@namenode]$chmod 700 .ssh
[hadoop@namenode]$ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key(/home/hadoop/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in/home/hadoop/.ssh/id_rsa.

Your public key has been saved in/home/hadoop/.ssh/id_rsa.pub.

The key fingerprint is:

39:6a:29:d1:f5:64:49:44:7f:85:a3:bb:f1:6c:cb:dfhadoop@namenode

6.3 将公钥分布并登录验证

尽管有些麻烦,但是还是需要逐一将公钥复制到给个从节点上。

[hadoop@namenode]$cd .ssh
[hadoop@namenode]$ssh namenode cat/home/hadoop/.ssh/id_rsa.pub >> authorized_keys
[hadoop@namenode]$ssh datanode1 cat/home/hadoop/.ssh/id_rsa.pub >> authorized_keys
[hadoop@namenode]$ssh datanode2 cat/home/hadoop/.ssh/id_rsa.pub >> authorized_keys
[hadoop@namenode]$ssh datanode3 cat/home/hadoop/.ssh/id_rsa.pub >> authorized_keys

authorized_keys拷贝到各个节点操作系统的对应目录,

[hadoop@namenode]$scp authorized_keysdatanode1:/home/hadoop/.ssh/
[hadoop@namenode]$scp authorized_keys datanode2:/home/hadoop/.ssh/
[hadoop@namenode]$ scp authorized_keys datanode3:/home/hadoop/.ssh/

在各台机器使用ssh远程登录namenode一次,如

[hadoop@namenode]$ ssh namenode date

如果无法远程登录成功,则必须检查以上步骤是否正确。要不然接下来的配置就无法进行了。

此文档中的配置为搭建本文描述Hadoop集群环境的最小配置,并没涉及相关性能参数设置,更多配置请进一步深入学习Hadoop。另外,可安装dsh等分布式shell工具方便配置。

7 运行Hadoop

7.1 解压安装Hadoop

[root@namenode]#su- hadoop
[hadoop@namenode]$wgethttp://lab.excellence.com.cn/download/develop/ hadoop-1.0.3.tar.gz

[hadoop@namenode]$tar -zxvfhadoop-1.0.3.tar.gz

7.2 修改hadoop-env.sh文件

为方便命令行操作,可将Hadoop home目录加入PATH等系统环境变量,操作如下:

[root@namenode]# vi /etc/profile             
JAVA_HOME=/java/jdk1.6.0_23

HADOOP_HOME=/home/hadoop/hadoop-1.0.3

PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HADOOP_HOME/bin:$PATH

CLASSPATH=.:/java/jdk1.6.0_23/lib:/java/jdk1.6.0_23/jre/lib:$CLASSPATH

exportJAVA_HOME HADOOP_HOME CLASSPATH PATH

在运行Hadoop之前需要做一些配置。指定包括主节点在内的所有节点上Java的位置,即在hadoop-env.sh中定义JAVA_HOME环境变量使之指向Java安装目录。

[hadoop@namenode]$vi /home/hadoop/hadoop-1.0.3/conf/hadoop-env.sh 
exportJAVA_HOME=/java/jdk1.6.0_23

注:根据实际情况添加jdk的JAVA_HOME目录并保存。

指定同步目录。每次启动Hadoop进程时,自动将在namenode节点上指定的目录中的内容更新到各个节点上。这会影响集群的性能。

export HADOOP_MASTER=namenode:/home/hadoop/hadoop-1.0.3

8 全分布模式部署

Hadoop需要修改的配置文件所在目录路径为/home/hadoop/hadoop-1.0.3/conf,修改的文件包括hadoop-env.shcore-site.xmlmapred-site.xmlhdfs-site.xmlmastersslaves

8.1  编辑core-site.xml

[hadoop@namenode]$ vi /home/hadoop/hadoop-1.0.3/conf/core-site.xml

<configuration>
 <property>
  <name>fs.default.name</name>
  <value>hdfs://namenode:9000/</value>
  <description>the name of the default file system. A URL whosescheme  and authority determine theFilesystem implementation
  </description>
 </property>

<property>
 <name>hadoop.tmp.dir</name>
 <value>/data/hdfs/hdfstmp</value>
 <description>
Abase for other temporary directories.
  </description>
</property>
</configuration>


参数名称

说明

fs.default.name

hdfs://namenode:9000/

该属性描述namenode的RPC服务器地址和端号

hadoop.tmp.dir

/data/hdfs/hdfstmp

Hdfs的临时工作目录。若目录不存在,先创建目录,并使用hadoop用户对目录有读写权限

8.2 编辑mapred-site.xml  

[hadoop@namenode]$vi /home/hadoop/hadoop-1.0.3/conf/mapred-site.xml

<configuration>
<property>
   <name>mapred.job.tracker</name>
   <value>jobtracker:9001</value>
   <description>
      the host and port that theMapReduce job tracker runsat.
  </description>
</property>
</configuration>

参数名称

说明

mapred.job.tracker

jobtracker:9001

指定jobtrackerRPC服务器的地址及端口号,格式如:hostname:port

8.3 编辑hdfs-site.xml

[hadoop@namenode]$vi /home/hadoop/hadoop-1.0.3/conf/hdfs-site.xml

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>3</value>
    <description>
the actual number of replication can be specifiedwhen the file iscreated.
   </description>
  </property>

<property>
  <name>dfs.name.dir</name>
  <value>/data/hdfs/hdfs</value>
</property>

<property>
  <name>dfs.data.dir</name>
  <value>/data/hdfs/hdfsdata</value>
</property>

  <property>
   <name>dfs.http.address</name>
   <value>namenode:50070</value>
   <description>
    The address and the base port where the dfsnamenode web ui will listen on.If the port is 0 then the server will start on afree port.
   </description>
  </property>

  <property>
   <name>dfs.secondary.http.address</name>
   <value> secNamenode:50090</value>
  <description>
    The secondary namenode http server addressand port.If the port is 0 then the server will starton a free port.
  </description>
</property>
</configuration>

参数名称

说明

dfs.replication

3

分布式文件系统中数据块的冗余因子,默认为3

dfs.name.dir

/data/hdfs/hdfs

Namenode节点中本地文件系统中存放命名空间及事务日志的路径。若目录不存在,先创建目录,并使用hadoop用户对目录有读写权限。可设置多个存放位置,逗号分隔,实现冗余

dfs.data.dir

/data/hdfs/hdfsdata

Datanode节点中本地文件系统存放数据块的位置若目录不存在,先创建目录,并使用hadoop用户对目录有读写权限。可设置多个存放位置,逗号分隔,挺高并行I/O

dfs.http.address

namenode:50070

Namenode主节点的http服务IP及端口,在此处配置主要用于显式指定固定的http服务端口,以便secondary namenode 与namenode通讯实现fsimage备份及edits与fsimage的合并更新。独部署secondar namenode时需配置此项

dfs.secondary.http.address

secNamenode:50090

Secondary NameNode节点的http服务IP及端口,在此处配置主要用于显式指定固定的http服务端口,以便与namenode通讯实现fsimage备份及edits与fsimage的合并更新。单部署secondar namenode时需配置此项

8.4 编辑masters

[hadoop@namenode]$vi /home/hadoop/hadoop-1.0.3/conf/masters 

namenode

说明

namenode

填写的Secondary NameNode节点的名称(hosts文件里必须有对应的映射记录)或者IP,当需要将secondary namenode单独部署的时候需将其对应节点名称在hosts文件里必须有对应的映射记录)IP添加至此文件

8.5 编辑slaves

[hadoop@namenode]$vi /home/hadoop/hadoop-1.0.3/conf/slaves

datanode1

datanode2

datanode3

说明

datanode1

datanode2

datanode3

Datanodetasktracker的运行节点名称在hosts文件里必须有对应的映射记录)ip

8.6 拷贝配置文件至datanode节点

在修改所有相应配置文件后,将/home/hadoop/hadoop-1.0.3整个解压目录拷配至datanode节点相应目录,执行如下命令:

8.7 启动DFS

/home/hadoop/hadoop-1.0.3整个解压目录拷配至datanode节点相应目录之后,一定要格式化HDFS以准备好存储数据:

[hadoop@namenode]$ hadoop namenode –format

现在可愿意启动Hadoop的守护进程:

[hadoop@namenode]$bin/start-dfs.sh 

查看NameNode进程是否已存在:

[hadoop@namenode]$ps -ef|grep hadoop|grep NameNode

由于所有进程都是JAVA进程,故也可运行:

[hadoop@namenodehadoop-1.0.3]$ jps

4826 Jps

4510 NameNode

4769SecondaryNameNode

验证访问,在浏览器输入URL:http:// 10.2.0.248:50070/

8.8 启动mapred

在jobtracker上启动jobtracker及tasker。

[hadoop@namenode]$start-mapred.sh

查看JobTracker进程是否已存在,在jobtracker节点执行,有返回则进程已启动。

[hadoop@namenode]$jps

5100 NameNode

5388SecondaryNameNode

5569 JobTracker

5715 Jps

检查TaskTracker进程是否已存在,在个datanode节点上执行:

[hadoop@datanode1]$ jps

4504 DataNode

4812 Jps

4709 TaskTracker

验证访问,在浏览器输入URL:http:// 10.2.0.248:50030

停止HDFS相关后台进程,停止前须保证集群中HBase及Zookeeper等后台进程已停止。

停止JobTracker及所有TaskTracker,在jobtracker上执行:

[hadoop@namenode]$$stop-mapred.sh

停止NameNode及所有DataNode,在namenode上执行:

[hadoop@namenode]$$stop-dfs.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值