相关阅读:


hbase 0.98.1集群安装

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

1. 网络设置

注意:下面各项网络配置务必前行运行,特别是关闭防火墙,以避免兴许安装过程中出现麻烦!

1.1 禁用防火墙
service iptables stop

chkconfig iptables off

假设是CentOS 7:

systemctl stop firewalld

systemctl disable firewalld

1.2 禁用IPv6

打开/etc/modprobe.d/dist.conf,加入:

alias net-pf-10 off
alias ipv6 off

又一次系统之后,能够通过命令:

lsmod|grep ipv6

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

假设是CentOS 7:

[root@localhost ~]#
vi /etc/default/grub
# line 6: add GRUB_CMDLINE_LINUX="
ipv6.disable=1
rd.lvm.lv=fedora-server/root.....
# apply changing [root@localhost ~]#
grub2-mkconfig -o /boot/grub2/grub.cfg [root@localhost ~]#
reboot

1.3 禁用SELinux

 [root@dlp ~]#
vi /etc/selinux/config # This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded. SELINUX=
disabled
# change # SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted [root@dlp ~]#
reboot
# reboot
2. 安装与配置
2.1 安装前的准备
在安装hadoop前须要安装ssh,配置各节点间的基于密钥的免password登录,安装jdk1.7并配置JAVA_HOME,关于这些操作请參考其它文档,本文不做赘述,仅仅给出一些环境变量的參考。建议在/etc/profile.d/下面建立一个env_var.sh文件,在当中加入例如以下内容:

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/sbin/*.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也是如此!

hadoop 2.2.0集群安装的更多相关文章

  1. hadoop 2.2.0集群安装详细步骤(简单配置,无HA)

    安装环境操作系统:CentOS 6.5 i586(32位)java环境:JDK 1.7.0.51hadoop版本:社区版本2.2.0,hadoop-2.2.0.tar.gz 安装准备设置集群的host ...

  2. Ubuntu 12.04下Hadoop 2.2.0 集群搭建(原创)

    现在大家可以跟我一起来实现Ubuntu 12.04下Hadoop 2.2.0 集群搭建,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机 ...

  3. hadoop 2.2.0 集群部署 坑

    注意fs.defaultFS为2..0新的变量,代替旧的:fs.default.name hadoop 2.2.0 集群启动命令:bin/hdfs namenode -formatsbin/start ...

  4. CentOS下Hadoop-2.2.0集群安装配置

    对于一个刚开始学习Spark的人来说,当然首先需要把环境搭建好,再跑几个例子,目前比较流行的部署是Spark On Yarn,作为新手,我觉得有必要走一遍Hadoop的集群安装配置,而不仅仅停留在本地 ...

  5. hadoop2.2.0集群安装和配置

    hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA.YARN等. 注意:apache提供的hadoop-2.2.0的安装包是在32位操作系统编译的,因为hadoop依赖一些C+ ...

  6. Linux基于Hadoop2.8.0集群安装配置Hive2.1.1及基础操作

    前言 安装Apache Hive前提是要先安装hadoop集群,并且hive只需要在hadoop的namenode节点集群里安装即可,安装前需保证Hadoop已启(动文中用到了hadoop的hdfs命 ...

  7. ElasticSearch 5.0.0 集群安装部署文档

    1.  搭建环境 3台物理机 操作系统 centos7 es1   192.168.31.141   4g内存   2核 es2   192.168.31.142   4g内存   2核 es3    ...

  8. CentOS下Storm 1.0.0集群安装具体解释

    本文环境例如以下: 操作系统:CentOS 6 32位 ZooKeeper版本号:3.4.8 Storm版本号:1.0.0 JDK版本号:1.8.0_77 32位 python版本号:2.6.6 集群 ...

  9. Hadoop 2.6.1 集群安装配置教程

    集群环境: 192.168.56.10 master 192.168.56.11 slave1 192.168.56.12 slave2 下载安装包/拷贝安装包 # 存放路径: cd /usr/loc ...

随机推荐

  1. 学习vi和vim编辑(3):一个简单的文本编辑器(2)

    然后文章,继续评论vi编辑简单的文本编辑命令. 本文主要是删除的文字.复制,运动命令. 删除文本: 正如上一篇文章中讲过的,对于删除命令("d")也具有"(command ...

  2. 多快好省的做个app开发

    从技术经理的角度算一算,如何可以多快好省的做个app [导读]前端时间,一篇“从产品经理的角度算一算,做个app需要多少钱”的文章在网上疯传,可见大家对互联网创业的热情!这次,从一名技术经理的角度再给 ...

  3. apache tomcat 集群! (转)

    公司需要一个内部测试局域网, 要求可以支持3000并发访问!以前也没做过服务器这方面.临时抱佛脚,查看了N多文档,他人经验,布置好之后,又遇到了N多问题,功夫不负有心人.终于还是完成了要求!观他人的布 ...

  4. outlook 当关闭时最小化到任务栏完美的解决方案

    近期使用Outlook,但很发现easy退出关闭.不能达到最小化封. 在网上找了很长时间也用outlook on the desktop插件,但该插件安装后的执行错误和被遗弃. 最后,我发现了一个叫k ...

  5. Smart Framework

    Smart Framework:轻量级 Java Web 框架 发表于2年前(2013-09-01 08:39)   阅读(48569) | 评论(188) 544人收藏此文章, 我要收藏 赞83 阿 ...

  6. [LeetCode] Longest Palindrome Substring 具体分析

    Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...

  7. Codeforces 487C. Prefix Product Sequence 逆+结构体

    意甲冠军: 对于数字n, 他询问是否有1~n置换 这种布置能够在产品上模每个前缀n 有可能0~n-1 解析: 通过观察1肯定要在首位,n一定要在最后 除4意外的合数都没有解 其它质数构造 a[i]=i ...

  8. Boost.Asio c++ 网络编程翻译(26)

    Boost.Asio-其他特性 这章我们讲了解一些Boost.Asio不那么为人所知的特性.标准的stream和streambuf对象有时候会更难用一些,但正如你所见.它们也有它们的益处.最后,你会看 ...

  9. zoj-3792-Romantic Value-最小割+数值转化

    假设不须要求边的个数的话,就是一个裸的最小割问题. 求边的个数就用边的权值记录一下. #include <stdio.h> #include <iostream> #inclu ...

  10. chrome扩展第三方浏览器下载安装

    1.使用其他浏览器打开谷歌应用市场,复制扩展详情地址url 2. 粘贴到:http://chrome-extension-downloader.com/中进行扩展的下载. 3. 拖拽到chrome e ...