Hadoop-2.5.1安装文档

来源:互联网 发布:wordpress 数据库搬家 编辑:程序博客网 时间:2024/05/21 19:50

第1章 前言

本文档针对hadoop2.5.1生态圈的安装,版本选择如下:

Jdk_1.7.0_45

Zookeeper 3.4.6

Hadoop 2.5.1

安装顺序:

1. 系统环境搭建

2. Hadoop集群安装的软件准备

3. Hadoop集群搭建

第2章 环境说明

2.1 每台机器的服务

Zookeeper集群: 针对大型分布式系统的可靠协调系统

JournalNode集群:存储和管理对hdfs操作日志

Namenode:记录hdfs数据块信息

ZKFC:监控namenode健康检测

Datanode:存储数据节点

RescourceMananger:对进行的作业进行资源调度

192.168.2.*

Zookeeper

JournalNode

NameNode

ZKFC

Datanode

Resource Manager

bx101(101)

 

 

 

bx102(102)

 

 

 

bx103(103)

 

 

bx104(104)

 

 

bx105(105)

 

 

 

bx106(106)

 

 

 

 

 

2.2 路径说明

服务名

配置文件

日志

Hadoop

/home/hadoop/hadoop/conf

/home/hadoop/hadoop/log

Zookeeper

/homehdoop//zookeeper/conf/zoo.cfg

/home/hadoop/zookpeeper/data/log

1 Namenode路径:

/home/hadoop/dfs/name

2 Datanode路径:

/home/hadoop/dfs/data

2.3 启动命令

服务名

命令

Hadoop

nohup hdfs journalnode 

./star-dfs.sh

./start-yarn.sh 。

Zookeeper

service zookeeper-server start

 

2.4 Web路径

2.4.1 hadoop访问网页

http://192.168.2.101:50070/dfshealth.jsp

2.4.2 jobhistory访问网页

http://192.168.2.101:19888/jobhistory

2.4.3 All Applications

http://192.168.2.103:8088/cluster

 

第3章 搭建系统环境

3.1 创建运行账号

建立hadoop运行帐号,六台机操作相同:

即为hadoop集群专门设置一个用户组及用户:

sudo groupadd hadoop    

//设置hadoop用户组

sudo useradd -s /bin/bash -d /home/hadoop -m hadoop -g hadoop -G root 

//添加一个hadoop用户,此用户属于hadoop用户组,且具有admin权限。

sudo  passwd hadoop   

//设置用户hadoop登录密码

su  hadoop   

//切换到hadoop用户中

3.2 主机名设置

hostname  bx101

vi  /etc/sysconfig/network

将里面的HOSTNAME修改为你想要的hostname,我这里是取的是bx101

HOSTNAME=bx101

查看设置是否生效,运行下面命令

hostname

3.3 Host ip绑定

修改/etc/hosts文件

vi  /etc/hosts 

修改成如下:

192.168.2.101 bx101

192.168.2.102 bx102

192.168.2.103 bx103

192.168.2.104 bx104

192.168.2.105 bx105

192.168.2.106 bx106

验证

ping bx102 

可以ping一下配置的host若有回包,说明配置成功

3.4 关闭防火墙

service  iptables  stop

chkconfig  iptables  off

第4章 Hadoop 2.5.1 安装准备

4.1 配置ssh免密码连入 

4.1.1 在master机器上生成密钥对

ssh-keygen -t rsa 

 

以上命令是产生公私密钥,产生目录在用户主目录下的.ssh目录中,如下:

 

Id_dsa.pub为公钥,id_dsa为私钥,紧接着将公钥文件复制成authorized_keys文件,过程如下:

cp id_dsa.pub  authorized_keys

chmod  644  authorized_keys     //要正确设置文件的权限644(即go-rwx

4.1.2 单机回环ssh免密码登录测试

即在单机结点上用ssh进行登录,看能否登录成功。登录成功后注销退出,过程如下

 

4.1.3 让主结点(hadoop-master)能通过SSH免密码登录两个子结点

scp -r /home/hadoop/.ssh  hadoop-node1:/home/hadoop

scp -r /home/hadoop/.ssh  hadoop-node2:/home/hadoop

4.1.4 验证ssh配置

master 节点 ssh hadoop-node2 成功则说明没问题

4.2 JDK安装

下载jdk-7u45-linux-x64.rpm

rpm -ivh jdk-7u45-linux-x64.rpm

修改/etc/profile文件

vi  /etc/profile

修改profile 最后面加入

export  JAVA_HOME=/usr/java/

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

重新加载

source /etc/profile

检查是否安装成功

java -version

 

 

4.3 Ntp服务器配置

4.3.1 服务器端配置

修改ntp.conf配置文件

vi /etc/ntp.conf

①、第一种配置:允许任何IP的客户机都可以进行时间同步

将“restrict default kod nomodify notrap nopeer noquery”这行修改成:

restrict default nomodify

②、第二种配置:只允许10.15.62.*网段的客户机进行时间同步

restrict default nomodify notrap noquery(表示默认拒绝所有IP的时间同步)之后增加一行:

restrict 10.15.62.0 mask 255.255.255.0 nomodify     

2) 同步时间设置

①通过网络同步时间

# Use public servers from the pool.ntp.org project.

# Please consider joining the pool (http://www.pool.ntp.org/join.html).

server 0.centos.pool.ntp.org

server 1.centos.pool.ntp.org

server 2.centos.pool.ntp.org

②使用本地时间

# Undisciplined Local Clock. This is a fake driver intended for backup

# and when no outside source of synchronized time is available.

server 127.127.1.0     # local clock

fudge  127.127.1.0 stratum 10

4.3.2 启动ntp服务器

 (2)通过service工具启动

service ntpd start 

service ntpd status

4.3.3 客户端配置

同步时间

ntpdate 10.15.62.70

vim /etc/crontab

如下配置成每小时同步一次

 1  *  *  *  * root ntpdate 10.15.62.70 && hwclock -w

第5章 hadoop集群安装

5.1 zookeeper搭建

a) 解压zoopeeper 

tar -xf zookeeper-3.4.6.tar.gz

b) 将解压后的zookeeper-3.4.6文件移到相应的位置  

cp  zookeeper-3.4.6   /home/hadoop/

c)   zookeeper-3.4.6的名字改为zookeeper 

命令: 

mv  zookerper-3.4.6  zookeepe

c) 修改环境变量

vi /etc/profile

export  ZOOKEEPER_HOME=/home/hadoop /zookeeper

source /etc/profile

d) 进入   zookeeper/conf 目录

zoo_sample.cfg文件拷贝一份,命名为为“zoo.cfg

cp  /zookeeper/conf/zoo_sample.cfg  /zookeeper/conf/ zoo.cfg

e) 修改 zook.cfg配置

vi  zook.cfg

tickTime=2000   //心跳时间,为了确保连接存在的,以毫秒为单位,最小超时时间为两个心跳时间

dataDir=/zookeeper/data  //用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里

clientPort=2181  //服务的监听端口

initLimit=10 //多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值

syncLimit=5 //多少个tickTime内,允许follower同步,如果follower落后太多,则会被丢弃。

server.1=Master:2888:3888

server.2=Slaver01:2888:3888

server.3=Slaver02:2888:3888

//配置集群里面的主机信息,其中server.xx要写在myid文件中,决定当前机器的id,第一个port用于连接leader,第二个用于leader选举。

f) 退到zookeeper文件夹下创建 datar文件夹

mkdir data 

g) 进入data目录下建立 myid文件

touch  myid   

写入 上面的server.X的id

vi  myid

g)  分发zookeeper 文件夹到其他机器

    scp  zookeeper  ip:/home/hadoop

h)启动 zookeeper

/zookeeper/bin目录下 输入

./zkServer.sh start

 j)查看是否启动 

    ./zkServer.sh status         正常启动可以看到状态

   Jps                     正常启动可以看到QuorumPeerMain进程

5.2 HDFS HA 搭建

5.2.1 部署包包准备

hadoop-2.5.1.tar.gz放在/home/hadoop 

tar  zxvf  hadoop-2.5.1.tar.gz 

改名 

mv  hadoop-2.5.1  hadoop

配置环境变量 

vi  /etc/profile

export  HADOOP_HOME=/home/hadoop/hadoop

export  PATH=$PATH:$HADOOP_HOME/bin

使环境变量生效

source  /etc/profile

5.2.2 创建目录

mkdir  /home/hadoop/dfs

mkdir  /home/hadoop/dfs/name

mkdir  /home/hadoop/data

5.2.3 hadoop-env.sh配置文件

进入配置文件夹hadoop/etc/hadoop/ 

cd  /hadoop/etc/hadoop/

编辑文件 hadoop-env.sh 

vi  hadoop-env.sh

 

export  JAVA_HOME/usr/java/jdk1.7.0_45

配置一个 JAVA_HOME的地址就好

5.2.4 core-site.xml 配置文件

编辑文件 core-site.xml 

vi  core-site.xml

u Hadoop.tmp.dirhadoop文件系统依赖的基础配置,很多配置都依赖它。它默认的位置是在/tmp/{$user}下面,但是在/tmp路径下的存储是不安全的,因为linux一次重启,文件就可能被删除。所以建议配置该路径到持久化目录。

u fs.defaultFS整个Federation集群对外提供服务的NS逻辑名称,这里的协议不再是hdfs,而是新引入的viewfs,这个逻辑名称会在下面的挂载表中用到。缺省文件服务的协议和NS逻辑名称,和hdfs-site里的对应,此配置替代了1.0里的fs.default.name

u Ha.zookeeper.quorum:A list of ZooKeeper server addresses, separated by commas, that are to be used by the ZKFailoverController in automatic failover.”。配置三个Zookper节点,用于ZKFC故障转移。

5.2.5 hdfs-site.xml配置

编辑文件 hdfs-site.xml 

vi  hdfs-site.xml

  

u dfs.nameservices  HDFS命名服务的逻辑名称,可用户自己定义,比如 mycluster,注意,该名称将被基于 HDFS 的系统使用,比如 Hbase 等,此外,需要你想启用 HDFS  Federation,可以通过该参数指定多个逻辑名称,并用“,”分割。

u dfs.ha.namenodes.[$nameserviceID]  命名服务下包含的NameNode列表,可为每个NN指定一个自定义的 ID 名称,比如命名服务mycluster下有两个NameNode,分别命名为 nn1 和 nn2。注意,目前每个命名服务最多配置两个 NameNode

u dfs.namenode.rpc-address.[$nameservice ID].[$name node ID] 为每个NN设置 RPC 地址。

u dfs.namenode.http-address.[$nameservice ID].[$name node ID] 为每个NN设置对外的 HTTP 地址.

u dfs.namenode.shared.edits.dir 设置一组journalNodeURI地址,active NameNodeedit log写入这些JournalNode,而standby NameNode读取这些edit log,并作用在内存中的目录树中,其中,journalId是该命名空间的唯一ID。假设你有三台journalNode,即node1.example.com, node2.example.com 和 node3.example.com,则可如上配置。

u dfs.journalnode.edits.dir 设置journaldata的存储路径

u dfs.client.failover.proxy.provider.[$nameservice ID]设置客户端与 active NameNode 进行交互的 Java 实现类,DFS 客户端通过该类寻找当前的active NameNode。该类可由用户自己实现,默认实现为 ConfiguredFailoverProxyProvider

需要一些目录放置fsimageedits,对应配置dfs.namenode.name.dirdfs.namenode.edits.dir

需要指定一个目录来保存blocks,对应配置

dfs.replication确定data block的副本数目,hadoop基于rackawareness(机架感知)默认复制3份分block,(同一个rack下两个,另一个rack下一 份,按照最短距离确定具体所需block, 一般很少采用跨机架数据块,除非某个机架down了)。

u dfs.permission是否开启文件权限验证,true开启,false不进行读写权限验证。(注:dfs.permission开启与否dfs permission信息都不会改变后丢失,chownchgrpchmod操作也始终会验证权限,dfspermission信息只在namenode里,并不在danode里与blocks关联)

5.3 YARN HA搭建

5.3.1 Yarn-site.xml配置

编辑文件 yarn-site.xml 

vi  yarn-site.xml

u yarn.resourcemanager.address参数解释:ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等。默认值:${yarn.resourcemanager.hostname}:8032

u yarn.resourcemanager.scheduler.address参数解释:ResourceManager ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。默认值:${yarn.resourcemanager.hostname}:8030

u yarn.resourcemanager.resource-tracker.address参数解释:ResourceManager NodeManager暴露的地址.NodeManager通过该地址向RM汇报心跳,领取任务等。默认值:${yarn.resourcemanager.hostname}:8031

u  yarn.resourcemanager.admin.address参数解释:ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。默认值:${yarn.resourcemanager.hostname}:8033

u  yarn.resourcemanager.webapp.address参数解释:ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。默认值:${yarn.resourcemanager.hostname}:8088

u yarn.resourcemanager.scheduler.class参数解释:启用的资源调度器主类。目前可用的有FIFOCapacity SchedulerFair Scheduler。默认值:org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

u yarn.resourcemanager.resource-tracker.client.thread-count参数解释:处理来自NodeManagerRPC请求的Handler数目。默认值:50

u yarn.resourcemanager.scheduler.client.thread-count参数解释:处理来自ApplicationMasterRPC请求的Handler数目。默认值:50

u yarn.scheduler.minimum-allocation-mb

参数解释:单个可申请的最小/最大内存资源量。比如设置为10243072,则运行MapRedce作业时,每个Task最少可申请1024MB内存,最多可申请3072MB内存。默认值:1024/8192

u yarn.scheduler.minimum-allocation-vcores 参数解释:单个可申请的最小/最大虚拟CPU个数。比如设置为14,则运行MapRedce作业时,每个Task最少可申请1个虚拟CPU,最多可申请4个虚拟CPU

u 释:NodeManager黑白名单。如果发现若干个NodeManager存在问题,比如故障率很高,任务运行失败率高,则可以将之加入黑名单中。注意,这两个配置参数可以动态生效。(调用一个refresh命令即可)

u yarn.resourcemanager.nodemanagers.heartbeat-interval-ms

参数解释:NodeManager心跳间隔默认值:1000(毫秒)

u  syarn.nodemanager.aux-services

通过该配置,用户可以自定义一些服务,例如Map-Reduceshuffle功能就是采用这种方式实现的  默认值: mapreduce_shuffle

5.3.2 mapred-site.xml配置

编辑文件 mapred-site.xml 

vi  mapred-site.xml

u mapreduce.jobhistory.address                     

参数解释:MapReduce JobHistory Server地址。

默认值: 0.0.0.0:10020

u mapreduce.jobhistory.webapp.address

参数解释:MapReduce JobHistory Server Web UI地址。

默认值: 0.0.0.0:19888

u mapreduce.jobhistory.intermediate-done-dir

参数解释:MapReduce作业产生的日志存放位置。

默认值: /mr-history/tmp

u mapreduce.jobhistory.done-dir

参数解释:MR JobHistory Server管理的日志的存放位置。

默认值: /mr-history/done

5.3.3 slaves配置

编辑文件 slaves 

vi  slaves

添加data节点

5.3.4 分发文件夹

Scp  r  hadoop  host:/home/hadoop

5.4 启动hadoop

5.4.1 格式化

hadoop namenode –format

5.4.2 启动命令

cd /home/hadoop/hadoop/sbin 

u 后台启动JN:

nohup hdfs journalnode &

u 启动Hadoop

./star-dfs.sh

u 启动Yarn:

./start-yarn.sh 

5.4.3 测试是否正常

http://192.168.2.101:8088

 

http://192.168.2.101:50070

 

查看报告

hadoop dfsadmin –report


若不正常,检查每个节点的进程

Jps

可以去配置的log文件夹下查看对应缺失进程的日志


0 0