阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop分布式安装及其集群配置笔记

230次阅读
没有评论

共计 6874 个字符,预计需要花费 18 分钟才能阅读完成。

各机器及角色信息:

共 10 台机器,hostname 与 ip 地址映射在此不做赘述。此为开发环境安装,所以不考虑将 NameNode 和 SecondaryNameNode 安装在同一台机器。

节点

角色

namenode01namenode
namenode02secondarynamenode
datanode01datanode
datanode02datanode
datanode03datanode
datanode04datanode
datanode05datanode
datanode06datanode
datanode07datanode
datanode08datanode

步骤:

因为 Hadoop 依赖 JDK 环境,必须先进行 JDK 安装,步骤另行参考资料。此处默认已经安装过 JDK 环境,并做过环境变量配置。

一、设置各节点 ssh 免密码登录

1. 进入到当前用户的.ssh 目录下

cd ~/.ssh

2. 执行 ssh 公钥生成命令,出现确认选项直接回车即可

ssh-keygen –t rsa

3. 生成:id-rsa、id-rsa.pub 两个文件,执行命令将.pub 文件放入到认证文件中

cat id-rsa.pub >> authorized_keys

自此本机的 ssh 免密码登录已经设置完成,可以执行命令:ssh localhost 进行验证,不需密码直接登入即为成功。

4. 剩下 9 台机器如法炮制。都完成本机 ssh- 免密码登录之后,将各节点的 authorized_keys 拷贝汇总到一台机器,分别追加到 authorized_keys 中。此处是将 nn02 以及 dn0* 全部拷贝到 nn01 上,执行:

cat authorized_keys_* >> authorized_keys

5. 此时所有节点都可对 nn01 进行免密码登录,然后将 nn01 的 authorized_keys 拷贝到其余节点,覆盖原来的 authorized_keys 即可。

避免一台一台复制,可以写一个简单的脚本,实现群体复制,代码如下供参考:(脚本名称:scpFile 使用方法:脚本第一个参数表示源文件,第二个参数是要拷贝到其余节点的位置路径,ex: ./scpFile ~/.ssh/authorized_keys ~/.ssh/)

#/bin/bash

# HostName which is copying files to.
ipNum=”namenode02 datanode01 datanode02 datanode03 datanode04 datanode05 datanode06 datanode07 datanode08″

# Path of source file
#src=”https://www.linuxidc.com/home/sys/hadoop-2.6.1/etc/hadoop/hadoop-env.sh”
src=$1

# Destination of the file moved
#dest=”/home/sys/hadoop-2.6.1/etc/hadoop/”
dest=$2

# Execute copying operation
for next in ${ipNum}
do
#      echo ${next}
      scp -r ${src} root@$next:${dest}
      echo “Copy file to root@${next}:${dest} is done!~”
done

二、关闭防火墙

1. 暂时性关闭防火墙

service iptables stop

2. 设置开机不启动防火墙

chkconfig iptables off

3. 查看防火墙状态

service iptables status

三、解压 hadoop 包,并修改配置

1. 解压 hadoop 压缩包,指定到 /home/sys/ 目录

tar –zxvf hadoop-2.6.1.tar.gz –C /home/sys/

2. 增加 hadoop 的环境变量到 /etc/profile 中:

export HADOOP_HOME=/home/sys/hadoop-2.6.1

export PATH=.:$HADOOP_HOME/bin:$PATH

3. 修改配置文件, 共 8 个(hadoop-env.sh、yarn-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、masters、slaves)

cd $HADOOP_HOME/etc/hadoop/

在 hadoop-env.sh 和 yarn-env.sh 中指定 Java_HOME:

export JAVA_HOME=/home/sys/jdk1.8.0_65

编辑 core-site.xml,增加如下内容:

<!– hdfs 的访问名称及端口 –>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://namenode01:9000</value>
                <description>The name of the default file system.</description>
        </property>

        <!– 临时目录 –>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/tmp</value>
                <description>A base for other temporary directories.</description>
        </property>

编辑 hdfs-site.xml,增加如下内容:

<property>
                <name>dfs.namenode.name.dir</name>
                <value>/home/dfs/name</value>
                <description>
                        Directory where HDFS name node store the name table(fsimage).
                </description>
        </property>

        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/home/dfs/data</value>
                <description>
                        Directory where HDFS data node store blocks.
                </description>
        </property>
        <!–  NameNode 和 SecondaryNameNode 分离的情况下,此项配置不可少,会影响 SecondaryNameNode 从 NameNode 拷贝镜像文件的存储,
              不配置的话,NameNode 宕机,Secondary 找不着备份的镜像文件  –>
        <property>
                <name>dfs.namenode.checkpoint.dir</name>
                <value>/home/dfs/namesecondary</value>
                <description>
                        Determines where on the local filesystem the DFS secondary
                        name node should store the temporary images to merge.
                </description>
        </property>

        <property>
                <name>dfs.replication</name>
                <value>2</value>
                <description>
                        HDFS block replication.
                </description>
        </property>

        <property>
                <name>dfs.blocksize</name>
                <value>134217728</value>
                <description>
                        HDFS storage blocksize.
                </description>
        </property>
       
        <!– 将 NameNode 和 SecondaryNameNode 分离开的配置分别指定 namenode 和 secondarynamenode 的启动节点 –>
        <property>
                <name>dfs.namenode.http-address</name>
                <value>namenode01:50070</value>
                <description>
                        The address and the base port where the dfs namenode web ui will listen on.
                </description>
        </property>

        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>namenode02:50090</value>
                <description>
                        The secondary namenode http server address and port.
                </description>
        </property>

        <property>
                <name>dfs.namenode.checkpoint.period</name>
                <value>3600</value>
                <description>
                        The number of seconds between two periodic checkpoints.
                </description>
        </property>

编辑 mapred-site.xml,增加如下内容:

<property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
                <description>
                        The runtime framework for executing MapReduce jobs.
                        Can be one of local, classic or yarn.
                </description>
        </property>

编辑 yarn-site.xml,增加如下内容:

<property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
                <description>
                        the valid service name should only contain a-zA-Z0-9_ and can not start with numbers
                </description>
        </property>
 
        <!–  指定 resourcemanager 的节点,若无此段配置,将会出现 DataNode 节点上的 nodemanager 进程启动一段时间之后自动消失的问题  –>
        <property>
                <description>The hostname of the RM.</description>
                <name>yarn.resourcemanager.hostname</name>
                <value>namenode01</value>
        </property>

创建文件 masters,增加如下内容:(实现 namenode 和 secondarynamenode 分离)

namenode02

修改文件 slaves,增加如下内容:

datanode01
datanode02
datanode03
datanode04
datanode05
datanode06
datanode07
datanode08

将 hadoop 文件夹拷贝到其他节点,使用上面的脚本 scpFile

scpFile /home/sys/hadoop-2.6.1 /home/sys/

二、集群启动

格式化操作,进入到 namenode01 的 hadoop 根目录下,执行:

bin/hadoop namenode –format

出现 Successfully 字样的时候,即为格式化成功

注意:如果需要再次及多次格式化 namenode,一定把 hdfs-site.xml 中 dfs.datanode.data.dir 目录清空一下,否则会造成重新格式化后 DataNode 启动不起来的问题。

          因为该目录下有一个版本号,多次格式化可能导致 DataNode 和 NameNode 的版本号不一致。

启动 dfs 文件系统

sbin/start-dfs.sh

  验证,jps 命令查看:

          namenode01 上出现 NameNode 进程

          namenode02 上出现 SecondaryNameNode 进程

          datanode0* 上出现 DataNode 进程

  即为启动 dfs 成功

启动 yarn

sbin/start-yarn.sh

  验证,jps 命令查看:

          namenode01 上出现 ResourceManager 进程

          datanode0* 上出现 NodeManager 进程

  即为启动 yarn 成功

三、修改 hadoop 启动日志目录

修改 namenode、datanode 节点默认日志目录

编辑 hadoop-env.sh,修改 HADOOP_LOG_DIR

export HADOOP_LOG_DIR=your path

修改 resourcemanager、nodemanager 日志目录

编辑 yarn-env.sh,修改 YARN_LOG_DIR

if [“$YARN_LOG_DIR” = “”]; then
  YARN_LOG_DIR=”your path”

四、去除本地库加载失败的警告信息

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

原因:Apache 提供的 hadoop 本地库是 32 位的,而在 64 位的服务器上就会有问题

修改加载本地库的日志级别

编辑 $HADOOP_HOME/etc/hadoop/log4j.properties,增加如下内容:

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR

下面关于 Hadoop 的文章您也可能喜欢,不妨看看:

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-11/125014.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6874字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中