Hadoop 2.2.0 集群搭建

概述

在前面我有写过关于 Hadoop 集群的搭建,不过之前的 Hadoop 是 1.x 版本的。目前是基于 2.x 版本的 Hadoop,与之前的 1.x 版本的差别还是挺大的。以及更为详细的 SSH 免密码互连登录的配置过程。所以,这里也把我搭建的过程记录下来了。希望于你有益。


版权说明

著作权归作者所有。

商业转载请联系作者获得授权,非商业转载请注明出处。

本文作者:Coding-Naga

发表日期: 2016年5月4日

本文链接:http://blog.csdn.net/lemon_tree12138/article/details/51316883

来源:CSDN

更多内容:分类 >> 大数据之 Hadoop


目录

  • 概述
  • 版权说明
  • 目录
  • 环境说明
  • 系统环境准备
    • 关闭防火墙
    • 禁用 IPv6
    • 禁用 SELinux
    • 修改 hosts
  • Oracle JDK 18 安装
  • 配置 SSH
    • 下载安装
    • 验证
    • 创建目录
    • 修改配置文件
    • 重启 ssh
    • 创建密钥
    • 公钥下发
    • 创建认证文件
    • 登录验证
    • 补充
  • Hadoop 配置
    • 下载安装
    • 配置文件
      • etcprofile
      • HADOOP_HOMEetchadoophadoop-envsh
      • HADOOP_HOMEetchadoopyarn-envsh
      • HADOOP_HOMEetchadoopcore-sitexml
      • HADOOP_HOMEetchadoophdfs-sitexml
      • HADOOP_HOMEetchadoopmapred-sitexml
      • HADOOP_HOMEetchadoopyarn-sitexml
      • HADOOP_HOMEetchadoopslaves
    • 下发
    • 启动及验证
      • 格式化 HDFS
      • 启动 HDFS
      • 启动 Yarn
      • 启动全部
      • 验证
      • 关闭全部
  • Ref

环境说明

  1. CentOS-6.7 ( master )
  2. CentOS-6.7 ( slave1 )
  3. CentOS-6.7 ( slave2 )
  4. JDK-1.8.0_92 ( Oracle )
  5. Hadoop-2.2.0
  6. 虚拟机环境: VirtualBox 5.0

系统环境准备

关闭防火墙

$ sudo service iptables stop
$ sudo chkconfig iptables off  # 设置防火墙不随系统启动,这一条你可以选择性添加

禁用 IPv6

$ sudo vim /etc/modprobe.d/dist.conf

添加如下内容

alias net-pf-10 off
alias ipv6 off

重启后验证操作

$ lsmod|grep ipv6

禁用 SELinux

$ sudo vim /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=enforcing
SELINUX=disabled

# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

修改 hosts

(1) hostname

$ sudo vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master
GATEWAY=172.16.2.20

(2)

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.2.144 master
172.16.2.171 slave1
172.16.2.91 slave2

Oracle JDK 1.8 安装

关于 Java 的安装,你可以有两种选择。一是 openjdk,另一个就是 Oracle jdk。这里我选择的是 Oracle jdk,而推荐的也是 Oracle jdk。

安装过程很简单,这里就不赘述了。


配置 SSH

配置 SSH 的目的在于实现集群中的机器可以免密码相互登录。

下载安装

$ sudo yum -y install openssh-server
$ sudo yum -y install openssh-clients

这里的 openssh-clients 不是必须安装的。如果你安装 ssh-server 完成之后,运行 ssh 出现系统无法识别 ssh 的话,需要另外安装 openssh-clients。

验证

OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
Bad escape character ‘rsion‘.

如果 SSH 安装成功,验证时会出现类似上面的版本信息。

创建目录

$ mkdir -p ~/.ssh
$ chmod 700 ~/.ssh

如果你在安装完SSH后,这些目录都未自动生成,请自行创建。如果要免密码登录,.ssh 文件夹的权限也要修改。

修改配置文件

执行如下指令:

$ sudo vim /etc/ssh/sshd_config

在文件中找到如下内容,将内容前面的注释去掉。如果没有,就自己添加吧。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

这一步是至关重要的,如果没有这一步,那么只能免密码登录本机,而无法免密码登录其他的机子了。

这里比如,如果你想让 master 主机免密码登录 slave 主机,那么就要修改 master 主机的配置文件。

重启 ssh

$ sudo service sshd restart

由于修改了 ssh 的配置文件,所以这里必须重启 ssh 服务才能生效。

创建密钥

$ ssh-keygen -t dsa -P ‘‘ -f ~/.ssh/id_dsa

指令的相关参数说明如下:

ssh-keygen 表示生成密钥
-t 表示指定生成的密钥类型
dsa 是dsa密钥认证的意思,即密钥类型
-P 提供密语
-f 指定生成的密钥文件

公钥下发

$ scp id_dsa.pub slave1:~/.ssh/

这里是将 master 的公钥下发到 slave 机群中。在第一次下发的时候,会有一些连接提示及密码提示。

创建认证文件

$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

将 master 主机上的公钥添加到用于认证的公钥文件中,authorized_keys 是用于认证的公钥文件。并修改 认证文件的权限。

此步骤是在 slave 机上完成。

登录验证

[[email protected] .ssh]$ ssh slave1
Last login: Thu Apr 28 15:17:57 2016 from master
[[email protected] ~]$

补充

上面的过程只是单向的免密码登录。如果想要两两相互免密码登录,则需要集群中的所有机器都有其他机器的公钥。而具体操作也很简单,这里就不赘述了。


Hadoop 配置

下载安装

这里可以在 Apache 的官网上下载,如果官网已经下架,就去百度或是 Google 里找,总会有的。

将下载下来的 Hadoop-2.2.0 用 WinSCP 上传到虚拟机上(当然你也可以直接在虚拟机里下载),解压,并重命名为 hadoop。

$ tar -zxvf hadoop-2.2.0.tar.gz
$ mv hadoop-2.2.0 hadoop
$ cd hadoop
$ chmod -Rv 755 ./bin/
$ chmod -Rv 755 ./sbin/

$ mkdir -p /home/hadoop/dfs/name
$ mkdir -p /home/hadoop/dfs/data
$ mkdir -p /home/hadoop/hadoop/tmp

上面对两个文件夹进行权限修改,是因为在这两个文件里有一些可执行文件,如果不修改他们的执行权限,那在启动时就会有权限限制。

配置文件

对于上面的下载安装步骤,基本已经 ok,不过如果想要正常使用,还是要配置,而 Hadoop 环境部署的核心就是此处的配置文件。

需要修改的配置文件列表如下:

1. /etc/profile

2. HADOOPHOME/etc/hadoop/hadoop?env.sh3.{HADOOP_HOME}/etc/hadoop/yarn-env.sh

4. HADOOPHOME/etc/hadoop/core?site.xml5.{HADOOP_HOME}/etc/hadoop/hdfs-site.xml

6. HADOOPHOME/etc/hadoop/mapred?site.xml7.{HADOOP_HOME}/etc/hadoop/yarn-site.xml

8. ${HADOOP_HOME}/etc/hadoop/slaves

/etc/profile

这是系统里的环境变量配置文件。配置此项目的目的是在于方便在任意目录都可以使用 Hadoop/bin 里的可执行文件(当然你也可以把 $HADOOP_HOME/sbin 加进去)。

export HADOOP_HOME=/home/hadoop/hadoop
export PATH=$PATH:$HADOOP_HOME/bin

${HADOOP_HOME}/etc/hadoop/hadoop-env.sh

在环境变量配置文件的合适位置添加如下 JAVA_HOME 信息:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_92

${HADOOP_HOME}/etc/hadoop/yarn-env.sh

在环境变量配置文件的合适位置添加如下 JAVA_HOME 信息:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_92

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

<configuration>

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>

    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/hadoop/tmp</value>
    </property>

</configuration>

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

<configuration>

    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master: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>2</value>
    </property>

</configuration>

dfs.replication 的值一般设为 3,但我们只有两个 Slave 节点,所以 dfs.replication 的值重置为 2。

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

<configuration>

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

    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
    </property>

    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
    </property>

</configuration>

需要先重命名,默认文件名为 mapred-site.xml.template.

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

<configuration>

    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

</configuration>

需要先重命名,默认文件名为 yarn-site.xml.template.

${HADOOP_HOME}/etc/hadoop/slaves

slave1
slave2

下发

这里说的下发就是把配置好的 hadoop,复制到另外两台 Slave 机中。下发的操作是基于 SSH 的,如下:

$ scp -r ~/hadoop slave1:~/
$ scp -r ~/hadoop slave2:~/

启动及验证

格式化 HDFS

在启动 Hadoop 之前,我们需要先格式化 HDFS。如下:

$ hadoop namenode –format

对于正常格式化的操作,这里会显示如下输出:

DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

16/05/04 10:15:38 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = master/172.16.2.117
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 2.2.0
STARTUP_MSG:   classpath = /home/hadoop/hadoop/etc/hadoop: ( ... 此处省略 N 条 ... ) :/home/hadoop/hadoop/contrib/                                                                                                                                                             capacity-scheduler/*.jar
STARTUP_MSG:   build = Unknown -r Unknown; compiled by ‘root‘ on 2013-11-22T03:4                                                                                                                                                             1Z
STARTUP_MSG:   java = 1.8.0_92
************************************************************/

 ( ... 此处省略 N 条 ... ) 

16/05/04 10:15:45 INFO common.Storage: Storage directory /home/hadoop/dfs/name has been successfully formatted.
16/05/04 10:15:45 INFO namenode.FSImage: Saving image file /home/hadoop/dfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
16/05/04 10:15:45 INFO namenode.FSImage: Image file /home/hadoop/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 198 bytes saved in 0 seconds.
16/05/04 10:15:45 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
16/05/04 10:15:45 INFO util.ExitUtil: Exiting with status 0
16/05/04 10:15:45 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/172.16.2.117
************************************************************/

启动 HDFS

$ ${HADOOP_HOME}/sbin/start-dfs.sh

对于正常的启动来说,会有类似如下的输出内容:

Starting namenodes on [master]
The authenticity of host ‘master (172.16.2.144)‘ can‘t be established.
RSA key fingerprint is 98:4f:21:03:76:e2:e9:96:77:3e:88:c5:88:70:04:cf.
Are you sure you want to continue connecting (yes/no)? yes
master: Warning: Permanently added ‘master,172.16.2.144‘ (RSA) to the list of kn                                                                                                                                                             own hosts.
master: starting namenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-nam                                                                                                                                                             enode-master.out
[email protected]‘s password: [email protected]‘s password:
slave1: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-dat                                                                                                                                                             anode-slave1.out

slave2: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-dat                                                                                                                                                             anode-slave2.out
Starting secondary namenodes [master]
master: starting secondarynamenode, logging to /home/hadoop/hadoop/logs/hadoop-h                                                                                                                                                             adoop-secondarynamenode-master.out

启动 Yarn

$ ${HADOOP_HOME}/sbin/start-yarn.sh

对于正常的启动来说,会有类似如下的输出内容:

starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-resourcemanager-master.out
[email protected]‘s password: [email protected]‘s password:
slave2: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave2.out

slave1: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave1.out

启动全部

$ ${HADOOP_HOME}/sbin/start-all.sh

对于正常的启动来说,会有类似如下的输出内容:

[[email protected] hadoop]$ ./sbin/start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [master]
master: starting namenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-namenode-master.out
slave2: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-slave2.out
slave1: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-slave1.out
Starting secondary namenodes [master]
master: starting secondarynamenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-secondarynamenode-master.out
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-resourcemanager-master.out
slave2: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave2.out
slave1: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave1.out

验证

(1) 验证启动的进程

$ jps

Master 端

[hadoop@master hadoop]$ jps
3202 Jps
2923 ResourceManager
2795 SecondaryNameNode
2637 NameNode

Slave 端

[hadoop@slave1 ~]$ jps
2256 DataNode
2419 Jps
2319 NodeManager

(2) 网页验证

# 查看 HDFS
登录浏览器,输入 http://master:50070

# 查看 RM
登录浏览器,输入 http://master:8088

关闭全部

$ ${HADOOP_HOME}/sbin/stop-all.sh

对于正常的启动来说,会有类似如下的输出内容:

[[email protected] hadoop]$ ${HADOOP_HOME}/sbin/stop-all.sh
This script is Deprecated. Instead use stop-dfs.sh and stop-yarn.sh
Stopping namenodes on [master]
master: stopping namenode
slave2: stopping datanode
slave1: stopping datanode
Stopping secondary namenodes [master]
master: stopping secondarynamenode
stopping yarn daemons
no resourcemanager to stop
slave2: no nodemanager to stop
slave1: no nodemanager to stop
no proxyserver to stop

Ref


时间: 2024-12-25 11:42:44

Hadoop 2.2.0 集群搭建的相关文章

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

现在大家可以跟我一起来实现Ubuntu 12.04下Hadoop 2.2.0 集群搭建,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机,增加更多的slave只需重复slave部分的内容即可. 系统版本: master:Ubuntu 12.04 slave:Ubuntu 12.04 hadoop:hadoop 2.2.0 安装ssh服务:sudo apt-get install ssh 有时也要更新一下vim:sudo apt-ge

Hadoop 2.6.0集群搭建(未完)

分给我的云服务器只有2台= = 所以只用两台来搭建~多台也就是多配几个slave节点木有关系的啦~那么下来开始啦 一.首先准备好编译过的hadoop2.6版本,以及相关jar包~准备开始搞啊~ 解压命令是 tar zxvf xxxxxxx(文件名) 创建tmp路径 用于hadoop相关路径 mkdir tmp 在tmp下创建hadoop路径 mkdir hadoop 创建在根目录创建data路径 随后路径如图 二.配置环境变量 随后输入命令 source ~./bash_profile 修改ho

Spark修炼之道(进阶篇)——Spark入门到精通:第一节 Spark 1.5.0集群搭建

作者:周志湖 网名:摇摆少年梦 微信号:zhouzhihubeyond 本节主要内容 操作系统环境准备 Hadoop 2.4.1集群搭建 Spark 1.5.0 集群部署 注:在利用CentOS 6.5操作系统安装spark 1.5集群过程中,本人发现Hadoop 2.4.1集群可以顺利搭建,但在Spark 1.5.0集群启动时出现了问题(可能原因是64位操作系统原因,源码需要重新编译,但本人没经过测试),经本人测试在ubuntu 10.04 操作系统上可以顺利成功搭建.大家可以利用CentOS

Ubuntu14.04下Hadoop2.2.0集群搭建

系统版本: master: Ubuntu 14.04  salve1: Ubuntu 14.04 hadoop: hadoop 2.2.0 1.系统配置以及安装SSH无密码登陆环境(master&slaves): 修改本机(master)和子节点(slaveN)机器名:打开/etc/hostname文件 sudo gedit /etc/hostname (修改后需重启才能生效) 修改host文件(映射各个节点IP): sudo gedit /etc/hosts 在后面添加内容为: 172.22.

Ubuntu 12.04下spark1.0.0 集群搭建(原创)

spark1.0.0新版本的于2014-05-30正式发布啦,新的spark版本带来了很多新的特性,提供了更好的API支持,spark1.0.0增加了Spark SQL组件,增强了标准库(ML.streaming.GraphX)以及对JAVA和Python语言的支持: 下面,我们首先进行spark1.0.0集群的安装,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机,增加更多的slave只需重复slave部分的内容即可.: 系统版本

Linux下Hadoop 2.2.0 集群配置攻略

Hadoop 2.2.0 集群配置攻略 用户输入标识: chmod +x jdk-7u45-linux-x64.rpm  为黑色带底纹 系统输出标识: java version "1.7.0_51" 为绿色小字 2014年3月20-日 by lilihao Q 404536204 1. 安装sun jdk (1). 到Oracle的官方网站下载jdk,目前最新版本是7u51 安装包: http://www.oracle.com/technetwork/java/javase/downl

Hadoop HA高可用集群搭建(2.7.2)

1.集群规划: 主机名        IP                安装的软件                            运行的进程 drguo1  192.168.80.149 jdk.hadoop                         NameNode.DFSZKFailoverController(zkfc).ResourceManager drguo2 192.168.80.150  jdk.hadoop                         Nam

redis3.0集群搭建

Redis集群搭建 redis cluster介绍 节点自动发现.集群容错slave选举.Cluster管理.集群配置管理. 集群中的每个Redis节点需要2个TCP连接端口,如6379端口用于Client连接,16379端口用于集群数据通信 集群采用Hash Slot方案,而不是一致性哈希,共16384个Hashslot.如果有3台机器,那么NodeA在0-5500,NodeB 在5501-11000,NodeC在11001-16384.这种设计下,添加,删除新Node比较方便. 由于Hash

CentOS7上Hadoop 2.6.0集群的安装与配置

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45740791 1.CentOS7安装 (1)最小化安装CentOS7 (2)配置网络连接 vi/etc/sysconfig/network-scripts/ifcfg-eth0 修改:BOOTPROTO=static ONBOOT=yes 添加:IPADDR= ipaddress(ip地址) NETMASK=subnetmask(子网掩码) GATEWAY=gateway(网关)