文档章节

hadoop 2.2.0集群安装

猪刚烈
 猪刚烈
发布于 2014/10/12 11:40
字数 2522
阅读 27
收藏 0
点赞 0
评论 0
相关阅读:

hbase 0.98.1集群安装


本文将基于hadoop 2.2.0讲解其在linux集群上的安装方法,并对一些重要的设置项进行解释,本文原文链接: http://blog.csdn.net/bluishglc/article/details/24591185,转载请注明出处!


1. 网络设置

禁用防火墙

service iptables stop

禁用IPv6
打开 /etc/modprobe.d/dist.conf,添加:

alias net-pf-10 off
alias ipv6 off

重新系统之后,可以通过命令:

lsmod|grep ipv6

查看ipv6模块是否已经不再加载

2. 安装与配置

2.1 安装前的准备

在安装hadoop前需要安装ssh,配置各节点间的基于密钥的免密码登录,安装jdk1.7并配置JAVA_HOME,关于这些操作请参考其他文档,本文不做赘述,只给出/etc/profile中关于JAVA_HOME和HADOOP_HOME的配置参考:

JAVA_HOME=/usr/java/jdk1.7.0_51
HADOOP_HOME=/usr/local/hadoop
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME HADOOP_HOME PATH

注:为了方便起见,我们将$HADOOP_HOME/sbin也加入到了PATH中,同时为了在输入命令时避免同名cmd文件的干扰,可以使用 rm -f $HADOOP_HOME/bin/*.cmd;rm -f $HADOOP_HOME/s bin/*.cmd;删除cmd文件。

2.2 配置必要的环境变量

本文安装基于这样一个约定或者说偏好:安装程序位于/usr/local(或者/opt),生成的文件和相关数据文件集中放置于/var/hadoop,将发行包解压至/usr/local(或者/opt)后,分别编辑 ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh${HADOOP_HOME}/etc/hadoop/yarn-env.sh,在两个文件中找到并修改或者是添加下列环境变量:

export JAVA_HOME=/your/java/home
export HADOOP_LOG_DIR=/var/hadoop/logs
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"

上述环境变量的配置都不是必须的,对于第一项配置原文件的写法是export JAVA_HOME=${JAVA_HOME},但在集群环境下启动时可能会报JAVA_HOME is not set and could not be found错误,从该项的注释上我们了解到,在集群环境下即使各结点都正确地配置了JAVA_HOME,这里最好还是显示地重新声明一遍JAVA_HOME.第二项配置是指定log的存放目录,默认位置是安装目录下的logs文件夹,按前文约定,本次安装将log文件置于/var/hadoop/logs下。对第三项和第四顶配置要视情况添加,如果出现4.2节所描述的问题则这两项是必须的!

2.3 配置${HADOOP_HOME}/etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://YOUR-NAMENODE:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/hadoop</value>
    </property>
</configuration>

对于一个新集群来说,唯一必须修改的项是:fs.defaultFS,该项指明了文件系统的访问入口,实际上是告知所有的datanode它们的namenode是哪一个从而建立起namenode与各datanode之间的通信。

除此之外,按照前文约定,我们把hadoop.tmp.dir设置为/var/hadoop。观察core-default.xml我们可以发现,在所有涉及目录的配置项上,默认都是在${hadoop.tmp.dir}之下建立子文件夹,所以本次安装我们只简单地将hadoop.tmp.dir的原默认值/tmp/hadoop-${user.name}改为/var/hadoop,将所有hadoop生成和使用的文件集中/var/hadoop下,避免与/tmp目录下若干其他文件混杂在一起。

2.4 配置${HADOOP_HOME}/etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>YOUR-SECONDARY-NAMENODE:50090</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

hdfs-site.xml的各项默认配置可参考: http://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml 对于一个新集群来说这个文件没没有必须修改的项,但是有几个重要的配置项是可能需要修改的,主要是如下几项:
    • dfs.namenode.secondary.http-address //指定secondary namenode结点,若不指定,在使用start-dfs.sh启动时,当前节点将自动成为secondary namenode
    • dfs.replication  //每一个block的复制份数,默认是3,如果集群datanode结点数量小于3应将该值设置小于或等于datanode的结点数量
    • dfs.namenode.name.dir //存放namenode相关数据的文件夹
    • dfs.datanode.data.dir //存放datanade相关数据的文件夹
    • dfs.namenode.checkpoint.dir //存放secondary namenode相关数据的文件夹

    对于后三项来说,它们的默认值也都是在${hadoop.tmp.dir}之下的子文件夹,你可以根据集群的实际情况修改这三个值。比如:把它们改到一个挂载到NFS上的文件夹。

    2.5 配置${HADOOP_HOME}/etc/hadoop/mapred-site.xml

    在${HADOOP_HOME}/etc/hadoop下拷贝一份mapred-site.xml.template命名为mapred-site.xml,添加如下内容:

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

    mapred-site.xml的各项默认配置可参考:hadoop.apache.org/docs/r2.2.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml 该文件唯一一个必须要修改的项是mapreduce.framework.name,该项告诉hadoop使用何种框架执行map-reduce任务。

    另外该文件也有几个设及文件存放位置的配置项:

    • mapreduce.cluster.local.dir
    • mapreduce.jobtracker.system.dir
    • mapreduce.jobtracker.staging.root.dir
    • mapreduce.cluster.temp.dir
    如有必要也应该做适当修改。

    2.6 配置${HADOOP_HOME}/etc/hadoop/yarn-site.xml

    <configuration>
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>YOUR-RESOURCE-MANAGER</value>
        </property>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    </configuration>

    yarn-site.xml的各项默认配置可参考: http://hadoop.apache.org/docs/r2.2.0/hadoop-yarn/hadoop-yarn-common/yarn-default.xml 该文件必须修改的项有两个,基中yarn.resourcemanager.hostname项与core-site.xml的fs.defaultFS项类似,该项为所有的nodemanager指明了resourcemanager,建立起resourcemanager与各nodemanager之间的通信。

    另外该文件也有几个设及文件存放位置的配置项:

    • yarn.nodemanager.local-dirs
    • yarn.resourcemanager.fs.state-store.uri

    如有必要也应该做适当修改。

    2.7 配置slave结点列表

    通常情况我们使用start-dfs.sh脚本来启动整个集群,查看该脚本可以知道,该脚本会基于配置文件在目标结点上启动namenode,secondary namenode, 和slave(datanode)结点,slave(datanode)的列表是在 ${HADOOP_HOME}/etc/hadoop/slaves文件中配置的,一个结点一行。所以我们需要在此文件中添加所有的datanode机器名或IP

    2.8 将上述配置的hadoop安装程序重新打包复制到所有结点的对应位置再展开,同时记得修改每个结点的/etc/profile

    3. 启动

    3.1 关于账户设置

    在正式的部署环境上,我们推荐设置专有账户来运行hadoop,例如:创建用户hdfs用户来启动namenode和datanode,创建yarn用户来启动resourcemanager和nodemanager.至于这些用户的用户组可以是同名用户组(这与CDH的做法一致的),也可以使用一个统一的用户组,如hadoop之类,这取决于你自己的喜好,但本质上这些用户彼此之间并没有必然的联系,让它们从属于同一个用户组并没有什么特殊的意味,所以我喜欢让每一个用户独立于自己的用户组。

    需要特别提醒的是:如果配置专用账户启动hadoop相关服务需要将hadoop所使用的各种文件夹(例如:dfs.namenode.name.dir等等)的owner和owner group改为专有用户,否则会导致专有用户因为没有足够的权限访问这些文件夹而导致服务启动失败。由于配置这些文件夹的owner和owner group相当繁琐,且启停这些服务时都需要切换至对应用户,对于日常开发来说是很不便的,所以如果你搭建的是本地开发环境可以简单地使用root帐号来启动hadoop.

    3.2 格式化集群

    初启动前,需要首先格式化集群,执行命令:

    hadoop namenode -format


    3.3 启动hdfs

    执行:

    start-dfs.sh

    该命令可以任意结点上执行。不过需要注意的是如果配置文件中没有指明secondary namenode(即在hdfs-site.xml中没有配置dfs.namenode.secondary.http-address),那么在哪个结点上执行该命令,该点将自动成为secondary namenode.

    以下单独启动某项服务的命令:

    启动namenode

    hadoop-daemon.sh start namenode

    启动secondarynamenode

    hadoop-daemon.sh start secondarynamenode

    启动datanode

    hadoop-daemon.sh start datanode

    启动之后,访问:

    http://YOUR-NAMENODE:50070

    检查HDFS各结点情况,如都能访问表示HDFS已无问题,如无法访问或缺少节点,可分析log的中的信息找出问题原因。

    3.4 启动yarn

    执行:

    start-yarn.sh

    该命令可以任意结点上执行。其slaves结点与hdfs一样,读取的也是 ${HADOOP_HOME}/etc/hadoop/slaves文件。

    以下单独启动某项服务的命令:

    启动resourcemanager

    yarn-daemon.sh start resourcemanager

    启动nodemanager

    yarn-daemon.sh start nodemanager

    启动之后,访问:

    http://YOUR-RESOURCE-MANAGER:8088

    检查YARN各结点情况,如都能访问表示YARN无问题,如无法访问或缺少节点,可分析log的中的信息找出问题原因。

    4. 常见错误

    4.1:Problem connecting to server: xxxx:9000

    在确认关闭了ipv6和防火墙之后,在namenode上使用

    netstat -ntlp|grep 9000

    检查namenode服务端口的分配(特别是 local address和foreign address),确定是否存在配置上的问题,如有没有正确配置/etc/hosts

    4.2:libhadoop.so.1.0.0 which might have disabled stack guard

    在使用./sbin/start-dfs.sh或./sbin/start-all.sh启动时会报出这样如下警告:

    Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /usr/local/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
    ....
    Java: ssh: Could not resolve hostname Java: Name or service not known
    HotSpot(TM): ssh: Could not resolve hostname HotSpot(TM): Name or service not known
    64-Bit: ssh: Could not resolve hostname 64-Bit: Name or service not known
    ....

    这个问题的错误原因会发生在64位的操作系统上,原因是从官方下载的hadoop使用的本地库文件(例如lib/native/libhadoop.so.1.0.0)都是基于32位编译的,运行在64位系统上就会出现上述错误。解决方法之一是在64位系统上重新编译hadoop,另一种方法是在hadoop-env.sh和yarn-env.sh中添加如下两行:

    export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"

    4.3:Error: JAVA_HOME is not set and could not be found.

    虽然你已经在各个节点上正确的配置了JAVA_HOME,但是启动时还是可能会报出上述错误,从etc/hadoop/hadoop-env.sh文件关于第一行配置:export JAVA_HOME=${JAVA_HOME}的注释上来看,对于一个分布式集群,这里JAVA_HOME最好显式地指明而不要使用默认的${JAVA_HOME}。对于etc/hadoop/yarn-env.sh也是如此!

    本文转载自:http://blog.csdn.net/bluishglc/article/details/24591185

    共有 人打赏支持
    猪刚烈
    粉丝 22
    博文 708
    码字总数 110
    作品 1
    海淀
    程序员
    Spark集群简单安装流程

    Spark集群部署 一、准备工作 准备3台机器创建集群,主机名及IP地址为Master 192.168.2.240Slave1 192.168.2.241Slave2 192.168.2.242 下载软件Scala: https://downloads.lightbend.com/scal...

    四京 ⋅ 2017/12/22 ⋅ 0

    Hadoop 2.2 集群配置

    第一部分 Hadoop 2.2 下载 Hadoop我们从Apache官方网站直接下载最新版本Hadoop2.2。官方目前是提供了linux32位系统可执行文件,所以如果需要在64位系统上部署则需要单独下载src 源码自行编译...

    颜建海 ⋅ 2014/04/30 ⋅ 0

    hadoop2.2.0配置

    第一部分 Hadoop 2.2 下载 Hadoop我们从Apache官方网站直接下载最新版本Hadoop2.2。官方目前是提供了linux32位系统可执行文件,所以如果需要在64位系统上部署则需要单独下载src 源码自行编译...

    蓝狐乐队 ⋅ 2014/04/15 ⋅ 0

    Hadoop2.2.0安装配置手册

    第一部分 Hadoop 2.2 下载 Hadoop我们从Apache官方网站直接下载最新版本Hadoop2.2。官方目前是提供了linux32位系统可执行文件,所以如果需要在64位系统上部署则需要单独下载src 源码自行编译...

    cnxk ⋅ 2013/12/06 ⋅ 2

    hadoop2.0集群搭建详解

    hadoop2.2.0集群搭建 PS:apache提供的hadoop-2.2.0的安装包是在32位操作系统编译的, 因为hadoop依赖一些C++的本地库,所以如果在64位的操作上安装 hadoop-2.2.0就需要重新在64操作系统上重...

    迪allen ⋅ 2014/03/31 ⋅ 11

    Hadoop 2.2.0安装和配置lzo

    Hadoop经常用于处理大量的数据,如果期间的输出数据、中间数据能压缩存储,对系统的I/O性能会有提升。综合考虑压缩、解压速度、是否支持split,目前lzo是最好的选择。LZO(LZO是Lempel-Ziv-...

    蓝狐乐队 ⋅ 2014/04/22 ⋅ 2

    Hadoop2.2.0集群在RHEL6.2下的安装实战

    本文介绍了一个Hadoop2.2.0集群的搭建过程,在2台4G内存的酷睿双核PC机上,使用VMWare WorkStation虚拟了4个RHEL6.2(1G内存、单核CPU、10G硬盘),总计用10个小时的时间,完成虚拟机制作和H...

    蓝狐乐队 ⋅ 2014/04/21 ⋅ 0

    【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第五步)(1)

    第一步:构造分布式Hadoop2.2.0集群 1,在Windows 7(本教程中的Spark集群运行的机器是8G的Windows内存)上安装VMware虚拟机(我们安装的是VMware-workstation-full-9.0.2),本教程中的VMwar...

    Spark亚太研究院 ⋅ 2014/10/08 ⋅ 0

    64位linux下支持lzo的Hadoop 2.2.0分布式集群配置细节摘要

    初学者搭建Hadoop环境容易陷入细节漩涡中,并不是说细节不重要,在程序世界中,细节恰恰是决定成败的关键。然而,如果能在深入细节之前对整体有全面、逻辑性的认识,那么遇到细节时也能准确定...

    Iuranus ⋅ 2014/06/16 ⋅ 0

    【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第五步)(4)

    7,在SparkWorker1和SparkWorker2上完成和SparkMaster同样的Hadoop 2.2.0操作,建议使用SCP命令把SparkMaster上安装和配置的Hadoop的各项内容拷贝到SparkWorker1和SparkWorker2上; 8,启动并验...

    Spark亚太研究院 ⋅ 2014/10/16 ⋅ 0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    下一页

    构建自定义组件

    #前言 接上篇,因项目需由H5转到小程序,故需打造自定义对话框。而这块需使用到微信小程序的自定义组件功能。 小程序自定义组件 点击此处,可以查看小程序自定义组件的api。 从自定义组件的样...

    387 ⋅ 15分钟前 ⋅ 0

    Maven 项目添加本地jar包的三种方式

    Maven 项目添加本地jar包的三种方式 翻译自3 ways to add local jar to maven project [TOC] 简介 在构建 Maven 项目时,有时候需要导入本地的jar包,本文介绍了三种添加本地jar包的方法。 ...

    Os_yxguang ⋅ 15分钟前 ⋅ 0

    long超过16位之后浏览器自动截断问题处理。

    java前后端交互的过程中,定义的Long字段超过16位之后,js发生截断,从而不能跟后台数据进行匹配。 处理方法 把long型字段转成string进行处理。(可以使用json注解转换或者springmvc统一拦截...

    strict_nerd ⋅ 17分钟前 ⋅ 0

    一文带你搞定Integer

    1.1 前言 Integer是int对应的包装类,它包含一个int类型的字段存储数据,并提供了多个基本操作,能在 int 类型和 String 类型之间互相转换。在Java5中,引入了自动装箱和自动拆箱功能,Java可...

    筱虾米 ⋅ 18分钟前 ⋅ 0

    Linux kernel脉络和主干总结

    写在前面 前人常说,对Linux操作系统/内核的理解,是计算机行业从业者的内功,决定了你在技术领域想走多远。但内核的庞大以及学习曲线之陡峭,总让我在学习途中觉得犹如“管中窥豹”。 随着工...

    Markz0928 ⋅ 33分钟前 ⋅ 0

    在gcc中使用intel风格的内联汇编

    很简单,内联汇编使用asm(“.intel_syntax noprefix/n”)声明一下,以后的内联汇编就可以用intel风格了,构建可执行文件时给gcc加上-masm=intel参数。 先写一个小程序测试一下: [cpp] view...

    simpower ⋅ 43分钟前 ⋅ 0

    NIO 之 ByteBuffer实现原理

    相关文章 BIO、NIO、AIO 内部原理分析 NIO 之 Selector实现原理 NIO 之 Channel实现原理 前言 Java NIO 主要由下面3部分组成: Buffer Channel Selector 在传统IO中,流是基于字节的方式进行...

    轨迹_ ⋅ 52分钟前 ⋅ 0

    Jenkins docker权限问题

    环境Ubuntu Server 工具 jenkins-war:2.89.2 报错信息 Cannot connect to the Docker daemon. Is the docker daemon running on this host?Build step 'Execute shell' marked build as fai......

    Pulsar-V ⋅ 53分钟前 ⋅ 0

    180621-一个简单的时间窗口设计与实现

    如何设计一个计数的时间窗口 时间窗口,通常对于一些实时信息展示中用得比较多,比如维持一个五分钟的交易明细时间窗口,就需要记录当前时间,到五分钟之前的所有交易明细,而五分钟之前的数...

    小灰灰Blog ⋅ 今天 ⋅ 0

    Android之Dalvik、ART、JIT、AOT

    Android之Dalvik、ART、JIT、AOT 本文内容:Dalvik、ART、JIT、AOT之间关系 本文定位:知识记录 学习过程记录,加深理解,提升文字组合表达能力。也希望能给学习的同学一些灵感 本文整理于[...

    lichuangnk ⋅ 今天 ⋅ 0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    下一页

    返回顶部
    顶部