Hadoop集群搭建


Hadoop集群搭建

1、伪分布式模式(Centos7、jdk1.8、hadoop2.7.3、Oracle VM VirtualBox)

1.1  环境搭建:网络配置、关闭防火墙、jdk安装、hadoop安装

1.1.1 网络配置

1) Oracle VM VirtualBox 网络设置,设置虚拟机和本地windows互通。

网卡1:网络地址转换(NAT)

网卡2:仅主机模式(Host-Only)网络

2) 设置固定ip

网卡1配置:$>vim /etc/sysconfig/network-scripts/ifcfg-enp0s3

网卡2配置:$>vim /etc/sysconfig/network-scripts/ifcfg-enp0s8

1.1.2 关闭防火墙

1) 查看防火墙状态:$>systemctl status firewalld.service

2) 临时关闭防火墙:$>systemctl stop firewalld.service

3) 永久关闭防火墙:$>systemctl disable firewalld.service

1.1.3 jdk安装

1) 上传安装包(可用SecureFXP)

2) 解压安装包:$>tar -zxvf jdk-8u131-linux-x64.tar.gz ./
3) 创建符号链接:$>ln -s jdk1.8.0_131/ jdk
4) 配置环境变量:$>sudo vim /etc/profile  打开后在末行添加如下代码

#set JAVA_HOME
export JAVA_HOME=/soft/jdk
export PATH=$PATH:$JAVA_HOME/bin

5) 使配置文件生效:$>source /etc/profile

6) 验证是否安装成功:$>java -version

1.1.4 hadoop安装

1) 上传安装包(可用SecureFXP)

2) 解压安装包:$>tar -zxvf hadoop-2.7.3.tar.gz ./
3) 创建符号链接:$>ln -s hadoop-2.7.3/ hadoop
4) 配置环境变量:$>sudo vim /etc/profile  打开后在末行添加如下代码

#set HADOOP_HOME
export HADOOP_HOME=/soft/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

5) 使配置文件生效:$>source /etc/profile

6) 验证是否安装成功:$>hadoop version

1.2 Hadoop配置

1) 进入Hadoop的配置文件目录:$>cd /soft/hadoop/etc/hadoop/

2) 编辑需要配置的文件

$>vim core-site.xml

<configuration>

    <property>
        <name>fs.defaultFSname>
            <value>hdfs://nn:8020value>
    property>

    
    <property>
        <name>hadoop.tmp.dirname>
        <value>/soft/hadoop/data/tmpvalue>
    property>
configuration>
core-site.xml

 $>vim hadoop-env.sh  手动修改"JAVA_HOME"的路径

#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/soft/jdk

 $>vim hdfs-site.xml

<configuration>
        <property>
                <name>dfs.replicationname>
                <value>1value>
        property>
configuration>
hdfs-site.xml

$>vim yarn-site.xml

<configuration>


        <property>
                <name>yarn.resourcemanager.hostnamename>
                <value>localhostvalue>
        property>
        <property>
                <name>yarn.nodemanager.aux-servicesname>
                <value>mapreduce_shufflevalue>
        property>
configuration>
yarn-site.xml

 $>vim mapred-site.xml

<configuration>
        <property>
                <name>mapreduce.framework.namename>
                <value>yarnvalue>
        property>
configuration>
mapred-site.xml

1.3 配置SSH

 1) 生成密钥对

$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

 2) 拷贝公钥到目标机

$>ssh-copy-id 192.168.56.101

1.4 Hadoop启动

1)格式化hdfs

$>hadoop namenode -format

 2)启动hdfs

$>start-dfs.sh

 3)启动yarn

$>start-yarn.sh

 4)查看是否启动成功

[yss@yss ~]$ jps
2512 NodeManager
2404 ResourceManager
1932 NameNode
2044 DataNode
2237 SecondaryNameNode
2830 Jps

 5)查看hdfs文件系统

#查看hadoop文件的根目录
$>hdfs dfs -ls /
#webui查看hadoop文件系统
http://192.168.56.101:50070/

 2、基于伪分布的完全分布式

  基于伪分布式的条件:关闭防火墙、各主机之间ssh互通。

2.1 节点规划(可根据实际情况调整)

nn dn1 dn2

dn3

NameNode

SecondaryNameNode

ResourceManager

DataNode

NodeManager

DataNode

NodeManager

DataNode

NodeManager

2.2 配置完全分布式

2.2.1 可在{HADOOP_HOME}/etc/目录下拷贝3份配置文件,分别命名local(本地模式)、pseudo(伪分布式)、full(完全分布式),然后在该目录下创建一个hadoop的付号连接,指向需要的模式。

[yss@nn /soft/hadoop/etc]$ll
total 12
drwxr-xr-x. 2 yss yss 4096 Jul 25 04:44 full
lrwxrwxrwx. 1 yss yss   22 Jul 25 04:50 hadoop -> /soft/hadoop/etc/full/
drwxr-xr-x. 2 yss yss 4096 Jul 25 01:36 local
drwxr-xr-x. 2 yss yss 4096 Jul 25 01:37 pseudo

 2.2.2 完全分布式配置

1)core-site.xml

<configuration>

    <property>
        <name>fs.defaultFSname>
            <value>hdfs://nn:8020value>
    property>

    
    <property>
        <name>hadoop.tmp.dirname>
        <value>/soft/hadoop/data/tmpvalue>
    property>
configuration>
core-site.xml

 2)hdfs

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replicationname>
        <value>3value>
    property>

    <property>
               <name>dfs.namenode.secondary.http-addressname>
            <value>nn:50090value>
        property>
configuration>
hdfs-site.xml

 slaves

dn1
dn2
dn3
slaves

 hadoop-env.sh

export JAVA_HOME=/soft/jdk

 3)yarn

yarn-site.xml


        <property>
                <name>yarn.nodemanager.aux-servicesname>
                <value>mapreduce_shufflevalue>
        property>


        <property>
                <name>yarn.resourcemanager.hostnamename>
                <value>nnvalue>
        property>
yarn-site.xml

 yarn-env.sh

export JAVA_HOME=/soft/jdk

 4)mapreduce


    <property>
        <name>mapreduce.framework.namename>
        <value>yarnvalue>
    property>
mapred-site.xml

 mapred-env.sh

export JAVA_HOME=/soft/jdk

 2.3 配置文件分发

 2.3.1 脚本编写

批量执行命令脚本

$>vim /usr/local/bin/xcall.sh

#!/bin/bash

params=$@
i=1

    echo ============= localhost $params =============
    $params
for (( i=1 ; i <= 3 ; i = $i + 1 )) ; do
    echo ============= dn$i $params =============
    ssh dn$i "$params"
done
xcall.sh

 在节点间分发文件的脚本
$>vim /usr/local/bin/xsync.sh

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=1; host<=3; host++)); do
        #echo $pdir/$fname $user@dn$host:$pdir
        echo --------------- dn$host ----------------
        rsync -rvl $pdir/$fname $user@dn$host:$pdir
done
xsync.sh