文档章节

CentOS6.5-64bit Hadoop2.4.1分布式集群部署

 一脸坏笑
发布于 2014/07/14 13:12
字数 1537
阅读 1550
收藏 0

        参考多个文档,终于把hadoop2.4.1集群环境搭建成功。因参考文档大多是hadoop2.2版本,所以在这里重新整理一份hadoop2.4.1版本的与大家分享。文档中如有错误的地方,欢迎大家留言指出,我看到后会第一时间确认修改。

1 任务

    在centos6.5-64bit上部署hadoop2.4.1分布式环境。

2 准备虚拟机

       我们不是土豪,没那么多机器给我们玩。没关系,我们使用虚拟机来部署。准备6台虚拟机,全部安装linux系统。centos、debian等都可以,但是这里用CentOS进行说明。1个maste节点,3个slave节点,另外加1个client节点用来部署nutch环境,给hdfs喂数据。最后1个monitor节点,后期用作部署监控平台,见下表:

主机名 IP 系统 角色 说明
master.hadoop 192.168.122.100 CentOS 6.5 64bit NameNode 负责总管分布式数据和分解任务执行
slave1.hadoop 192.168.122.101 CentOS 6.5 64bit
DataNode 负责分布式数据存储和任务的执行
slave2.hadoop
192.168.122.102 CentOS 6.5 64bit
DataNode
负责分布式数据存储和任务的执行
slave3.hadoop
192.168.122.103 Debian 7.5 64bit
DataNode
负责分布式数据存储和任务的执行
client.hadoop 192.168.122.200 CentOS 6.5 64bit
nutch solr 中文分词
利用Nutch网络爬虫给hdfs喂数据
monitor.hadoop 192.168.122.201 Debian 7.5 64bit
Ganglia
Nagios

监控


3 安装配置Hadoop

hadoop要求所有节点使用相同的用户、相同的目录结构部署(没有证实)。

不过我的理解:

1.使用相同的用户部署。这点比较好理解,master管理slave的时候需要登录slave节点执行脚本。如果用户不相同,脚本不能识别使用哪个用户登录slave节点。 

2.不一定使用相同的路径。因为有环境变量来指向部署的路径,所以不用一定部署到相同的路径。但是如果部署路径不相同的话,管理部署不方便。所以还是尽量相同吧。

3.1 准备工作

    3.1.1 配置虚拟机IP地址和主机名

    根据上面的表格配置虚拟机ip和hostname,配置好以后在/etc/hosts文件添加以下解析。有条件配置了自己的DNS服务器的话,这步可以改成在DNS服务器中增加以下解析,然后所有节点DNS地址指向自己的DNS服务器IP。只要保证所有节点主机名称解析IP一致就达到目的了。

192.168.122.100    master.hadoop
192.168.122.101    slave1.hadoop
192.168.122.102    slave2.hadoop
192.168.122.103    slave3.hadoop
192.168.122.104    client.hadoop
192.168.122.105    monitor.hadoop

    完成后验证每个节点是否都能够正确解析。

    3.1.2 创建用户

    所有节点创建hadoop用户,master节点与slave节点之间配置ssh无密码登录。

    完成后,在master.hadoop上ssh slave1.hadoop看看能否无密码登录成功。同样的测试master.hadoop到所有节点是否能够无密码登录成功。

    3.1.3 安装JDK

    下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

    这里我们选择下载linux x64版本的tar压缩包。 jdk-7u60-linux-x64.tar.gz  

      

tar -zxvf jdk-7u60-linux-x64.tar.gz
mv jdk1.7.0_60/ /usr/lib/

   vim /etc/profile 加入JAVA_HOME等环境变量    

# JAVA
export JAVA_HOME=/usr/lib/jdk1.7.0_60
export JRE_HOME=/usr/lib/jdk1.7.0_60/jre 
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib 
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    source /etc/profile使环境变量生效,查看java版本。能够查看到版本号,说明JAVA环境配置成功了。

[root@master ~]#source /etc/profile
[root@master ~]#java -version
java version "1.7.0_55"
OpenJDK Runtime Environment (rhel-2.4.7.1.el6_5-x86_64 u55-b13)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)

    所有机器都要安装JDK。所有节点服务器的JDK使用相同的版本。

3.2 安装hadoop

slave节点的配置跟master节点是一样的。所以我们只要部署好master节点,slave节点等master节点配置好以后scp拷贝或者rsync同步到slave节点就可以了。

     安装hadoop有两种方式,一种是下载hadoop二进制编译包。配置好环境变量。配置好hadoop配置文件就可以了。另外一种就是编译安装了。两种方式我都介绍一下,实际部署的时候选择其中一种就可以了。

    3.2.1 解压安装编译版

    下载tar包,并解压

#wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.4.1/hadoop-2.4.1.tar.gz
#tar zxvf hadoop-2.4.1.tar.gz 
#mv hadoop-2.4.1/  /opt/
#cd /opt
#chown -R hadoop.hadoop hadoop-2.4.1/

    配置环境变量vim /etc/profile,加入HADOOP_HOME等环境变量,其中注释掉的HADOOP_ROOT_LOGGER=DEBUG,console在调试时可以打开,打开后输出的DEBUG日志比较详细。

# HADOOP
export HADOOP_HOME=/opt/hadoop
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_PREFIX
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_PREFIX/lib/native
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
export HADOOP_HDFS_HOME=$HADOOP_PREFIX
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
export HADOOP_YARN_HOME=$HADOOP_PREFIX
#export HADOOP_ROOT_LOGGER=DEBUG,console
export LD_LIBRARY_PATH=$HADOOP_PREFIX/lib/native
export PATH=$PATH:$HADOOP_HOME/bin

    需要注意的是,apache官方提供的编译版中的native library是32bit的。运行在64bit系统启动集群时会报WARN提示,要解决这个WARN有两个方法,一个是编译源码包,得到64bit的nativ library文件后替换原来的32bit文件。 另一个方法就是网上找别人编译好的64bit native library库文件,下载替换。 


    3.2.2 编译安装源码版

    首先需要安装一些依赖包

yum install lzo-devel zlib-devel gcc gcc-c++ autoconf automake libtool ncurses-devel openssl-devel cmake

3.3 配置Hadoop

    3.3.1 core-site.xml

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master.hadoop:9000</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>4096</value>
    </property>
</configuration>

    

    3.3.2 hdfs-site.xml

<configuration>
    <property>
        <name>dfs.nameservices</name>
        <value>hadoop-cluster1</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master.hadoop:50090</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///home/hadoop/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///home/hadoop/dfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>


    3.3.3 mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobtracker.http.address</name>
        <value>master.hadoop:50030</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master.hadoop:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master.hadoop:19888</value>
    </property>
</configuration>


    3.3.4 yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master.hadoop:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master.hadoop:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master.hadoop:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master.hadoop:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master.hadoop:8088</value>
    </property>
</configuration>


    3.3.5 slaves

slave1.hadoop
slave2.hadoop
slave3.hadoop










© 著作权归作者所有

粉丝 0
博文 14
码字总数 5708
作品 0
杭州
私信 提问
CentOS6.5 64bit如何安装DNS服务dnsmasq加速网站访问

CentOS6.5 64bit如何安装DNS服务dnsmasq加速网站访问 技术奇客|ITGeeker2017-02-2037 阅读 DNS dnsmasq是个非常小巧的dns服务器,可以解决小范围的dns查询问题,建议内网终端不要超过50台主机...

技术奇客|ITGeeker
2017/02/20
0
0
Spark1.2.1集群环境搭建——Standalone模式

机器准备 笔者有三台机器,左侧栏为ip,右侧为hostname,三台机器都有一个名为spark的用户。 192.168.248.150 spark-master192.168.248.153 ubuntu-worker192.168.248.155 spark-worker1 根据...

Jackson_Mu
2015/03/16
9.1K
13
Spark集群搭建——Hadoop2.4.1集群搭建

安装Java 参见Hadoop 1.2.1 伪分布式模式安装中Java安装部分 配置SSH免密码验证 我们还是以spark-master, ubuntu-worker, spark-worker1三台机器为例。 参见博客Spark集群搭建——SSH免密码验...

Jackson_Mu
2015/03/16
2.7K
4
模块部署(译)

模块部署 概述 在 Tachyon 源代码树中, 目录包含一些工具可以协助你在 AWS EC2 或 virtualbox 搭建 Tachyon集群。 In Tachyon source tree, directory contains utilities to help you set...

Ryan-瑞恩
2015/10/21
59
0
超级家委会服务器信息

服务器系统:Centos6.5 64Bit PHP:5.4.40 Tengine:2.1.0 MySQ:Aliyun RDS MySQL5.5 SSH端口:2015 bloglinux环境...

耐小心
2015/05/10
6
0

没有更多内容

加载失败,请刷新页面

加载更多

【0918】正则介绍_grep

【0918】正则介绍_grep 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 一、正则介绍 正则是一串有规律的字符串,它使用单个字符串来描述或匹配一系列符合某个语法规则的字符串。 二、grep工具 ...

飞翔的竹蜻蜓
27分钟前
4
0
为什么要在网站中应用CDN加速?

1. 网页加载速度更快 在网站中使用CDN技术最直接的一个好处就是它可以加快网页的加载速度。首先,CDN加速的内容分发是基于服务器缓存的,由于CDN中缓存了不少数据,它能够给用户提供更快的页...

云漫网络Ruan
今天
8
0
亚玛芬体育(Amer Sports)和信必优正式启动合作开发Movesense创新

亚玛芬体育和信必优正式启动合作开发Movesense创新,作为亚玛芬体育的完美技术搭档,信必优利用Movesense传感器技术为第三方开发移动应用和服务。 Movesense基于传感器技术和开放的API,测量...

symbiochina88
今天
4
0
创龙TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA核心板规格书

SOM-TL437xF是一款广州创龙基于TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA芯片设计的核心板,采用沉金无铅工艺的10层板设计,适用于高速数据采集和处理系统、汽车导航、工业自动化等领...

Tronlong创龙
今天
5
0
好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部