大数据学习-搭建集群

    16年毕业到现在为止干了四年多的Java。盲目的跳槽,并没有对自己的职业精心规划。自己感觉是把两年的工作经验用了四年。近期工作一直用到大数据方面的东西。想转大数据。网上找了套视频自己学习学习。写博客也是为了监督自己。不然。。。懒懒懒

搭建集群

1.安装VMTools 安装Centoss

2.关闭防火墙

    sudo service iptables stop
    sudo chkconfig iptables off

3.设置静态IP vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="eth0"
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.5.2
DNS1=192.168.5.2

修改主机名 vim /etc/sysconfig/network

HOSTNAME=hadoop100

4.配置 /etc/hosts

192.168.1.100   hadoop100

5.创建一个一般用户 

    useradd zxzh
    passwd zxzh

6.配置这个用户为sudo

    sudo vim /etc/sudoers
    在root    ALL=(ALL)       ALL
    添加zxzh   ALL=(ALL)       NOPASSWD:ALL
    保存时wq!强制保存

7.在/opt目录下创建两个文件夹module和software,并把所有权赋给zxzh
    zxzh /opt/module /opt/software
    chown zxzh :zxzh /opt/module /opt/software

8.关机,快照,克隆   克隆的虚拟机改IP(用一般用户登陆)

9.搞一个分发脚本(网上抄的)
    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=100; host<103; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -av $pdir/$fname [email protected]$host:$pdir
done
==============================================================

    chmod +x xsync  
    sudo cp xsync /bin
    sudo xsync /bin/xsync

10.配置免密登陆 (非对称加密 中间人攻击 rsa)

 1. 生成**对
        ssh-****** -t rsa 三次回车
        2. 发送公钥到本机
        ssh-copy-id hadoop102 输入一次密码
        3. 分别ssh登陆一下所有虚拟机
        ssh hadoop103
        exit
        ssh hadoop104
        exit
        4. 把/home/atguigu/.ssh 文件夹发送到集群所有服务器
        xsync /home/zxzh/.ssh

11.在一台机器上安装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. sudo xsync /etc/profile
        7. 在其他机器分别执行source /etc/profile

###所有配置文件都在$HADOOP_HOME/etc/hadoop
12. 首先配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件,配置Java_HOME
    在每个文件第二行添加 export JAVA_HOME=/opt/module/jdk1.8.0_144

13. 配置Core-site.xml

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

     <!-- 指定Hadoop运行时产生文件的存储目录 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop-2.7.2/data/tmp</value>
        </property>

     配置hdfs-site.xml
        <!-- 数据的副本数量 -->
        <property>
            <name>dfs.replication</name>
            <value>3</value>
        </property>
        <!-- 指定Hadoop辅助名称节点主机配置 -->
        <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>hadoop102:50090</value>
        </property>

配置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>hadoop101</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>

配置mapred-site.xml
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 历史服务器端地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop102:10020</value>
    </property>
    <!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop102:19888</value>
    </property>
    启动历史服务器:mr-jobhistory-daemon.sh start historyserver

14,配置Slaves
    hadoop100
    hadoop101
    hadoop102

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

16.格式化Namenode 在hadoop100 (格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群   格式化NameNode会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群不到已数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode )
    hdfs namenode -format

17.启动hdfs 
    start-dfs.sh

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

19 mkdir input
    vim input/input
        abc
        def efg
        asd

    hadoop fs -put input /  把input扔到hdfs中 直接jar 执行worldcount
    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output

20 关 stop-dfs.sh stop-yarn.sh

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
    回到16

hadoop

大数据学习-搭建集群

yarn

大数据学习-搭建集群