一旦工作,那就要努力的干,聪明的干,快速的干——用省下来的时间干自己喜欢干的事情。!

hadoop模块及配置

hadoop lampnick 1886℃ 0评论

hadoop包含四个模块

1.Hadoop Common
    支持其他模块的工具模块
2.Hadoop Distributed File System(HDFS)
    分布式文件系统,提供了对应程序数据的高吞吐量访问
    [进程]
    NameNode       //名称节点               --NN
    DataNode       //数据节点               --DN
    SecondaryNamenode  //辅助名称节点           --2ndNN
3.Hadoop YARN
    yet another resource negotiate
    作业调度与集群资源管理的框架
    [进程]
    ResourceManager    //资源管理器--RM
    NodeManager        //节点管理器--NM
4.Hadoop MapReduce
    基于yarn系统的对大数据集进行并行处理的技术。

配置hadoop(均在hadoop用户下配置的)

    1.Standalone/local
        独立/本地模式(默认),使用的本地文件系统,不需要作任何配置
        查看文件系统的方式
        $>hadoop fs -ls
        此模式下没有启动任何的java进程
        只是用于开发测试环境
    2.Pseudodistributed mode
        伪分布模式
        [配置文件-目录为:/soft/hadoop/etc/hadoop]
        a.core-site.xml
            <?xml version="1.0"?>
            <configuration>
                <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://localhost/</value>
                </property>
            </configuration>

        b.hdfs-site.xml
            <?xml version="1.0"?>
            <configuration>
                <property>
                    <name>dfs.replication</name>
                    <value>1</value>
                </property>
            </configuration>

        c.mapred-site.xml(默认没有此文件,复制mapred-site.xml.template到mapred-site.xml)
            <?xml version="1.0"?>
            <configuration>
                <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
                </property>
            </configuration>

        d.yarn-site.xml
            <?xml version="1.0"?>
            <configuration>
                <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>localhost</value>
                </property>
                <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
                </property>
            </configuration>

        e.配置SSH安全登录(免密码登录)
            1)安装ssh(centos7默认有sshd服务)
                $> yum -y install ssh
            2)生成密钥对
                $>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
                $>ll  ~/.ssh //查看生成的公私密钥
            3)导入公钥到授权库中
                $>cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
            4)登录到localhost
                $>ssh localhost //第一次登录会让输入yes,后面不会再要求输入。
                [
                如果设置了还是需要输入密码,可能是权限不对,可查看日志:tail -f /var/log/secure。也可参考此文章。
                $>chmod 700 ~/.ssh
                $>chmod 600 ~/.ssh/authorized_keys
                ]
            5)格式化HDFS文件系统
                $>hadoop namenode -format
            6)启动所有的进程
                $>start-all.sh
            7)查看进程
                $>jps    //一共有5个进程 NN DN 2ndNN RM NM,如果进程数不对,杀死所有进程stop-all.sh,重新格式化系统
            8)查看文件系统
                $>hadoop fs -ls
            9)创建文件系统
                $>hadoop fs -mkdir -p /user/hadoop/data
                $>hadoop fs -ls -R /    //等同-lsr

    3.Fully distributed mode
        完全分布式
        在配置完全分布式模式之前,需要有2个准备工作来完成文件分发和远程执行命令

 

自定义脚本完成文件分发-xsync

#!/bin/bash
#使用举例:xsync /hello.txt
pcount=$#
if (( pcount<1 )) ; then
        echo no args;
        exit;
fi

p1=$1;
fname=`basename $p1`
echo fname=$fname

pdir=`cd -P $(dirname $p1) ; pwd`
echo pdir=$pdir

cuser=`whoami`
for host in `cat $HADOOP_HOME/etc/hadoop/slaves`
do 
    echo ---------- $host ----------
    rsync -rvl $pdir/$fname $cuser@$host:$pdir
done

自定义脚本执行远程命令-xcall(普通版)

#!/bin/bash
#使用举例:xcall ls // 如果运行xcall java -version 报错,参考此文章即可解决
pcount=$#
if (( pcount<1 )) ; then
        echo no args;
        exit;
fi

for host in `cat $HADOOP_HOME/etc/hadoop/slaves`
do
        echo ---------- $host ----------
        ssh $host $@
done
echo ---------- localhost ---------
$@

自定义脚本执行远程命令-xcall(并发版

#!/bin/bash
pcount=$#
if (( pcount<1 )) ; then
        echo no args;
        exit;
fi

cuser=`whoami`
for host in `cat $HADOOP_HOME/etc/hadoop/slaves_for_loop`
do
{
        echo ---------- $host -- `date +%Y-%m-%d-%H:%M:%S` --------
        sleep 1
        ssh $cuser@$host "$@"
}&
done
wait
echo ---------- localhost ---------
$@

完全分布式配置

    1.复制jkd和hadoop到集群中的所有主机中
        [hadoop@s100 soft]$ xsync /soft

    2.查看复制文件
        [hadoop@s100 soft]$ xcall ls -l /soft

    3.复制/etc/profile到集群中的所有主机
        [root@s100 .ssh]# xsync /etc/profile
        [root@s100 .ssh]# xsync /etc/environment

    4.使环境变量生效
        [root@s100 .ssh]# xcall source /etc/profile
        [root@s100 .ssh]# xcall source /etc/environment

    5.抽取出hadoop的所有的默认配置文件
        1)解压hadoop-2.7.3.tar.gz
        2)[core-default.xml]
            hadoop-common-2.7.3.jar/core-default.xml
        3)[hdfs-default.xml]
            hadoop-hdfs-2.7.3.jar/hdfs-default.xml
        4)[yarn-default.xml]
            hadoop-yarn-common-2.7.3.jar/yarn-default.xml
        5)[mapred-default.xm]
            hadoop-mapreduce-client-core-2.7.3.jar/mapred-default.xml
    6.配置文件
        [slaves]
            192.168.88.101
            192.168.88.102
            192.168.88.103
        [hdfs-site.xml]
            <?xml version="1.0" encoding="UTF-8"?>
            <configuration>
                    <property>
                            <name>dfs.replication</name>
                            <value>3</value>
                    </property>
                    <property>
                      <name>dfs.namenode.secondary.http-address</name>
                      <value>s104:50090</value>
                    </property>
            </configuration>

        [core-site.xml]
            <?xml version="1.0" encoding="UTF-8"?>
            <configuration>
                    <property>
                            <name>fs.defaultFS</name>
                            <value>hdfs://s100/</value>
                    </property>
                    <property>
                      <name>hadoop.tmp.dir</name>
                      <value>/home/hadoop/hadoop</value>
                    </property>
            </configuration>

    7.分发以上文件
        $>xsync core-site.xml
        $>xsync hdfs-site.xml
        $>xsync slaves
        //创建临时目录
        [hadoop@s100 hadoop]$ xcall mkdir /home/hadoop/hadoop
    8.关闭所有节点
        $>stop-all.sh
    9.格式化
        $>hadoop namenode -format
    10.启动start-all.sh
    11.创建目录,文件
        [hadoop@s100 hadoop]$ hadoop fs -mkdir -p /user/hadoop/data

    12.测试
        http://s100:50070/
        http://s101:50075/
        http://s102:50075/
        http://s104:50090/

转载请注明:MitNick » hadoop模块及配置

喜欢 (0)or分享 (0)
头像
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址