Hadoop集群搭建过程及配置文件总结

1. 配置文件总结

总共8个配置文件,4个site的xml文件,3个环境脚本,1个slaves

  • 4个site文件:hdfs-site.xml,yarn-site.xml,mapred-site.xml,core-site.xml
  • 3个环境脚本:hadoop-env.sh,yarn-env.sh,mapred-env.sh
  • 1个slaves:slaves

2. 完全分布式运行模式的集群搭建过程

  1. 虚拟机配置
    硬盘50G 内存4G cpu 62 22
    /boot 200M
    /swap 2G
    / 全部

  2. *安装VMTools

  3. 防火墙关闭
    service iptables stop //服务关闭
    chkconfig iptables off //关闭开机自启

  4. 创建一个一般用户atguigu
    useradd atguigu
    passwd atguigu

  5. 在/opt目录下创建software module文件夹,并更改所有权限
    mkdir /opt/software /opt/module
    chown atguigu:atguigu /opt/software /opt/module

  6. 把这个用户加到sudoers
    vim /etc/sudoers
    atguigu ALL=(ALL) NOPASSWD: ALL
    :wq!强制保存

  7. 改Hosts
    vim /etc/hosts
    在文件后追加

192.168.1.100   hadoop100
192.168.1.101   hadoop101
192.168.1.102   hadoop102
192.168.1.103   hadoop103
192.168.1.104   hadoop104
192.168.1.105   hadoop105
192.168.1.106   hadoop106
192.168.1.107   hadoop107
192.168.1.108   hadoop108
192.168.1.109   hadoop109

(下面的8,9,10 每克隆一台都需要做一遍)

  1. 改静态IP
    sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.2
DNS1=192.168.1.2
NAME=eth0
  1. 改主机名
    sudo vim /etc/sysconfig/network
    改HOSTNAME字段
    改成 HOSTNAME=hadoop100
    拍快照

  2. 改网卡脚本文件
    sudo vim /etc/udev/rules.d/70-persistent-net.rules
    第一行删掉

    第二行
    最后 NAME=“eth1” 改成 NAME=“eth0”

  3. 搞一个分发脚本
    cd ~
    vim xsync
    内容如下:

#!/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=102; host<105; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -av $pdir/$fname $user@hadoop$host:$pdir
done
chmod +x xsync

sudo cp xsync /bin

sudo xsync /bin/xsync
  1. 配置免密登陆

    1. 生成密钥对
    cd .ssh
    ssh-keygen -t rsa 三次回车
    
    2. 发送公钥到本机
    ssh-copy-id hadoop102 输入一次密码
    
    3. 分别ssh登陆一下所有虚拟机
    ssh hadoop103
    exit
    ssh hadoop104
    exit
    
    4. 把/home/atguigu/.ssh 文件夹发送到集群所有服务器
    xsync /home/atguigu/.ssh
    
  2. 在一台机器上安装Java和Hadoop,并配置环境变量,并分发到集群其他机器
    1. 拷贝文件到/opt/software,两个tar包
    2. tar -zxf h"+tab" -C /opt/module
    3. tar -zxf j"+tab" -C /opt/module
    4. sudo vim /etc/profile
    在文件末尾添加

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    保存
    5. source /etc/profile
    
    6. xsync /etc/profile
    分发Java和Hadoop到集群其他机器
	
    7. 在其他机器分别执行source /etc/profile

###所有配置文件都在$HADOOP_HOME/etc/hadoop

  1. 首先配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件,配置Java_HOME
    在每个文件第二行添加 export JAVA_HOME=/opt/module/jdk1.8.0_144

  2. 配置core-site.xml

<!-- 指定HDFS中NameNode的地址 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop102:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
  1. 配置hdfs-site.xml
<!-- 数据的副本数量 -->
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop104:50090</value>
</property>
    
  1. 配置yarn-site.xml
<!-- Site specific YARN configuration properties -->
<!-- Reducer获取数据的方式 -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop103</value>
</property>
<!-- 日志聚集功能使能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>

<!-- 日志保留时间设置7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
  1. 先改名
    mv mapred-site.xml.template mapred-site.xml
    再配置mapred-site.xml
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop104:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop104:19888</value>
</property>

#启动历史服务器:mr-jobhistory-daemon.sh start historyserver

  1. 配置slaves
    hadoop102
    hadoop103
    hadoop104

  2. 分发配置文件
    xsync /opt/module/hadoop-2.7.2/etc

  3. 格式化Namenode 在hadoop102
    hdfs namenode -format

  4. 启动hdfs
    start-dfs.sh

  5. 在配置了Resourcemanager机器上执行
    在Hadoop103上启动start-yarn.sh

  6. mkdir input
    vim input/input
    abc
    def efg
    asd

    hadoop fs -put input /
    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output

  7. 关 stop-dfs.sh stop-yarn.sh

  8. hadoop-daemon.sh start namenode或datanode
    yarn-daemon.sh start resourcemanager或nodemanager

如果集群出了问题
stop-dfs.sh
stop-yarn.sh
cd $HADOOP_HOME
rm -rf data logs
回到21

你可能感兴趣的:(Hadoop)