hadoop伪分布式和完全分布式搭建

1.大数据三件事情: 
    1.数据采集:flume、logstash、sqoop、datax、maxwell、cannel、flinkcdc、(自己开发spark、flink)
    2.数据存储:hadoop、hbase、kudu、clickhouse、mysql、tidb、solar
    3.数据分析:mapreduce(hadoop)、hive、spark、flink、phoenix、clickhouse、kylin、presto、druid、impala
    数据传输: kafka、pular 


2.数据处理的方式: 
    1.离线计算、批处理 : 
        根据业务周期性来定: 
            eg: 
                T+1 :
                H+1: 当前时间点 处理上一个小时【整点】之前的数据

    2.实时计算、实时处理:
        业务周期性: 
            1.指标:1s、3s、5s、10s
            2.数仓:
                1min、5min、10min、30min


hadoop:分布式文件存储系统
    广义:hadoop为主的生态圈(sqoophive、spark、flink、cdh)
    狭义:hadoop本身

hadoop组成: 
    hdfs 数据存储 hbase、kudu、
    yarn 资源(cpu、mem)和作业的调度 就剩yarn  【任务调度框架 有区别的】
    mapreudce 数据计算的框架【生产上不用】 设计理念指导其他框架 (hive、spark、flink)

hadoop版本: 
    1.apache :【公司自己搭建比较少、云服务器】 
        2.x 
        3.x
    2.cdh 【偏多、部署和管理方便 】
        cdh5.x  cdh6.x 
    3.hdp 

该项目包括以下模块:

  Hadoop Common:支持其他Hadoop模块的通用实用程序。
  Hadoop 分布式文件系统 (HDFS™):一种分布式文件系统,提供对应用程序数据的高吞吐量访问。
  Hadoop YARN:用于作业调度和集群资源管理的框架。
  Hadoop MapReduce:一种基于YARN的系统,用于并行处理大型数据集。
谁使用Hadoop?

学习: 
    apache (主要)
    cdh (体验)


部署: 
    都要 
    伪分布式【单点】
    完全分布式【三台】【不配ha】

部署什么东西?【大部分软件都是 主从架构】

1.数据存储:hdfs 
    namenode  老大
    datanode  小弟
    seconderynamenode 秘书

2.资源分配和任务调度: yarn 
    resourcemanager 老大
    nodemanager 小弟


伪分布式【单点】: 
    1.配置模板机: 
        1.hostname  =》 ip 
192.168.10.20 bigdata20
192.168.10.21 bigdata21
192.168.10.22 bigdata22
192.168.10.23 bigdata23
192.168.10.24 bigdata24
192.168.10.25 bigdata25
    2.关闭防火墙 1-65535
        systemctl stop firewalld
        systemctl disable firewalld
    3.hadoop 配置临时root权限 
        vim /etc/sudoers 
    4.hadoop用户创建工作环境 
        mkdir app data software 
    5.卸载系统自带的jdk 
        rpm -qa | grep java | xargs -n1  rpm -e --nodeps
    6.重启机器
        reboot     


    克隆机器: 
        1.修改ip 
        2.机器的名字

    远程连接: 
        1.hostname =》 ip 
            win => hosts 配置了ip映射 【注意】
            linux =》 hosts  
                ip =》 hostname 一一映射  
            win :C:\Windows\System32\drivers\etc    

官网: 
    hadoop.apache.org 
    project.apache.org
源码地址: 
    https://github.com/apache/hadoop
    https://github.com/apache/project 

智慧教学云平台:https://online.zretc.net 


1.Java™ must be installed.
    1.部署jdk 
    
        1.解压
        tar -zxvf ./jdk-8u212-linux-x64.tar.gz -C ~/app/
        2.软连接 
        ln -s jdk1.8.0_212/ java
            好处: 
                1.方便版本管理
                2.磁盘不够 小盘换大盘
        
        3.配置环境变量 
            vim ~/.bashrc
            #JAVA_HOME
            export JAVA_HOME=/home/hadoop/app/java
            export PATH=${JAVA_HOME}/bin:${PATH}
        
        4.生效环境变量 
            source ~/.bashrc
        
        5.介绍目录
        drwxr-xr-x. 2 hadoop hadoop     4096 4月   2 2019 bin  执行脚本
        drwxr-xr-x. 3 hadoop hadoop     4096 4月   2 2019 include lib库
        drwxr-xr-x. 5 hadoop hadoop     4096 4月   2 2019 lib lib库

ssh must be installed : 

部署hadoop: 
    1.下载安装包 
        1.官网  3.3.2 
        2.http://archive.apache.org/dist    https://dlcdn.apache.org/hadoop/common/
    
    2.安装 
        1.解压
        tar -zxvf ./hadoop-3.1.3.tar.gz  -C ~/app/
        tar -zxvf ./hadoop-3.3.2.tar.gz  -C ~/app/
        
        2.软连接
            ln -s hadoop-3.3.2/ hadoop
        3.目录结构: 
            drwxr-xr-x. 2 hadoop hadoop  4096 2月  22 04:42 bin 命令执行脚本
            drwxr-xr-x. 3 hadoop hadoop  4096 2月  22 02:44 etc 管理配置文件
            drwxr-xr-x. 2 hadoop hadoop  4096 2月  22 04:42 include lib库
            drwxr-xr-x. 3 hadoop hadoop  4096 2月  22 04:42 lib lib库
            drwxr-xr-x. 3 hadoop hadoop  4096 2月  22 02:44 sbin 启动停止脚本
            drwxr-xr-x. 4 hadoop hadoop  4096 2月  22 05:52 share 官方提供的案例包
        4.配置环境变量 
            vim ~/.bashrc
            #HADOOP_HOME
            export HADOOP_HOME=/home/hadoop/app/hadoop
            export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${PATH}
        
        5.生效环境变量 
            source ~/.bashrc

部署服务:hdfs  yarn 
hdfs:
    1.vim hadoop-env.sh
        export JAVA_HOME=/home/hadoop/app/java
    
    2.hadoop模式: 
        Local (Standalone) Mode 本地模式  用不了
        Pseudo-Distributed Mode 伪分布式  学习
        Fully-Distributed Mode  完全分布式 生产用【ha】
    
    3.配置文件:core-site.xml hdfs-site.xml

    core-site.xml: 
        <configuration>
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://bigdata21:9000</value>
            </property>
        </configuration>
    hdfs-site.xml:
        <configuration>
            <property>
                <name>dfs.replication</name>
                <value>1</value>
            </property>
        </configuration>
    
    4.ssh 的配置 
        ssh 远程登录 、执行
            1.语法格式 
                ssh 机器的ip/hostname   =>远程登录
                ssh 用户@机器的ip/hostname [命令]  =》 远程登录执行

            2.面试题: 
                a  b  
                    a=>b     远程登录执行 光标停留在 a机器还是b机器? a
                    a=>b     远程登录 光标停留在 a机器还是b机器?     b
        1.ssh免密登录配置 
            ssh-keygen   =》 生成两把钥匙  2把
            cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  【记录钥匙】
            chmod 0600 ~/.ssh/authorized_keys  =》 修改权限 
                 664 =》 600 


hdfs启动: 
    1.格式化文件系统【第一次部署的时候做】
    hdfs namenode -format
    2.启动hdfs     
        start-dfs.sh
        三个进程: 
            如何查看进程?
                1.ps -ef | grep hadoop 
                2.jps 
                [hadoop@bigdata21 ~]$ jps | grep -v Jps
                5746 SecondaryNameNode
                5426 NameNode
                5541 DataNode
    3. hadoop daemon log output : 
        1.$HADOOP_LOG_DIR 
        2.默认路径:$HADOOP_HOME/logs

    4.namenode web ui: 
        http://ip:9870/
        http://hostname:9870/

        linux 文件系统
            hadoop 文件系统
        
        win 文件系统
            百度网盘
        
        端口: 
            9000  =》 namenode 对外提供服务的端口
            9870 =》 namenode web ui 的端口
            3306 =>  mysql对外提供服务的端口

5.执行一个mapreduce job : 
    hdfs dfs  =》 hadoop软件 提供的 shell 命令   新的
    hadoop fs  旧的

    dfs =》 操作文件系统的程序入口 
    fs
    1.创建文件 
    hdfs dfs -mkdir /data 
    hadoop fs -mkdir /data

    2.上传文件 
    hadoop fs -put ./1.log /data

    3.运行jar包 =》 mapreduce job 
    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'
    hadoop jar =》 yarn jar 

        1.去看一下hadoop-mapreduce-examples-3.3.2.jar 源码
    
    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /data /wc-out

    4.查看job运行结果数据
        1.文件下载 
            hadoop fs -get /wc-out ./
        2.直接查看hdfs上文件 
            hadoop fs -cat /wc-out/*

    大数据处理: 
        1.指定数据源 
        2.处理
        3.结果输出

    思考: 
        mapreudce job  cpu mem 是谁分配的呢? yarn ?
            local分配的 

            mapreudce job 运行模式 : 
                1.local  本地模式
                2.yarn  yarn模式

            xxxx on yarn  : 
                mr 
                spark 
                flink 
                on k8s :
    5.停止hdfs 命令
        stop-dfs.sh

部署yarn:  mapred-site.xml 
    1.mapred-site.xml 
        <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <property>
            <name>mapreduce.application.classpath</name>
            <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
        </property>
    </configuration>

    2.yarn-site.xml
        <configuration>
            <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
            </property>
            <property>
                <name>yarn.nodemanager.env-whitelist</name>
                <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
            </property>
        </configuration>

启动yarn : 
    1.启动yarn 
        start-yarn.sh
    
    2.yarn 的web ui : 
        http://ip:8088/
        http://hostname:8088/
    3.Run a MapReduce job.
        hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /data /wc-out4

    4.停止yarn 
    stop-yarn.sh

补充: 
    1.hadoop脚本: 
        start-all.sh : 
            start-dfs.sh 
            start-yarn.sh  
        stop-all.sh 
    2.配置文件 : 
        1.默认配置文件 
            core-default.xml
            hdfs-default.xml
            mapred-default.xml
            yarn-default.xml
        2.服务器配置文件:
            core-site.xml
            hdfs-site.xml
            mapred-site.xml
            yarn-site.xml

        参数配置的优先级: 服务器配置 》默认配置 


        3.参数解释: 
            fs.defaultFS   =》 指定namenode 对外提供服务的 配置 ip+port 
            dfs.replication => 块的副本数 3 
            mapreduce.framework.name

        4.修改数据文件路径 =》 tmp 
            namenode 
            datanode 
            snn 
            yarn 

            hadoop.tmp.dir =》 /tmp/hadoop-${user.name}

            
            <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/hadoop/app-data</value>
            </property>
        
        5.配完参数 启动hdfs ? 
            hdfs :/data  => linux: /tmp 

            1.复制数据
                cp -r ./* /home/hadoop/app-data/
            2.启动hdfs 


完全分布式部署: 三台机器
    1.集群划分?

        hdfs: 
        
            bigdata22  namenode    datanode 
            bigdata23                datanode
            bigdata24    snn            datanode

        yarn:
            bigdata22                              nodemanager 
            bigdata23    resourcemanager            nodemanager
            bigdata24                            nodemanager 
        
    2.注意: 
            snn 机器选择参数
            resourcemanager 机器选择参数 

    3.ssh 免密登录的做 


    4.linux下文件分发 
        scp :
            [hadoop@bigdata21 ~]$ scp hadoop@bigdata21:./1.log hadoop@bigdata22:~
        raync 

ssh 免密登录 
    1.ssh-keygen 【三台机器都要做】
    2.拷贝公钥 【三台机器都要做】
        ssh-copy-id xxx 
        ssh-copy-id bigdata22
        ssh-copy-id bigdata23
        ssh-copy-id bigdata24

    3.验证 免密登录 


1.部署jdk【三台都要部署】
    1.先部署一台 =》 分发到其他机器

    以bigdata22 为例 部署+分发 

    1.文件分发脚本 
#判断参数的个数 
if [ $# -lt 1 ];then
    echo "参数不足"
    exit;
fi

for host in bigdata22 bigdata23 bigdata24
do
    #todo 分发文件 
    echo "======${host}====="

    for  file in $@
    do
        #判断文件是否存在
        if [ -e $file ];then

            #获取文件父目录
            pdir=$(cd -P $(dirname $file); pwd)
            #获取文件名字 
            fname=$(basename $file)

            #分发文件
            ssh $host "mkdir -p ${pdir}"
            rsync -av ${pdir}/${fname} $host:${pdir}
        else 
            echo "${file} 不存在"
        fi
    done 
done

    1.分发jdk 
        xsync jdk1.8.0_212
    2.分发软连接 
        xsync java
    3.分发环境变量文件
        xsync ~/.bashrc
    4.source 环境变量
        source ~/.bashrc 

2.部署hadoop 
    配置bigdata22: 

    1.解压
    2.软连接
    3.环境变量
    4.配置hdfs 
        1.core-site.xml  
<configuration>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://bigdata22:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/app-data</value>
</property>
</configuration>

        2.hdfs-site.xml  : 
<configuration>
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>


<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>bigdata24:9868</value>
</property>

</configuration>


    5.配置yarn
        mapred-site.xml:
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
    <name>mapreduce.application.classpath</name>
    <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>

        yarn-site.xml:
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.env-whitelist</name>
    <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
</property>

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>bigdata23</value>
</property>


        hadoop-env.sh \mapred-env.sh\yarn-env.sh
            export JAVA_HOME=/home/hadoop/app/java

        
        [hadoop@bigdata22 hadoop]$ cat workers 
        bigdata22
        bigdata23
        bigdata24

    5.分发文件
        22 =》 23 24 

        1.hadoop文件夹 

        2.软连接 

        3.环境变量

    6.启动 hdfs 
        1.格式化 
        hdfs namenode -format
        2.启动hdfs  
        start-dfs.sh 
        
        3.查看webui 
             http://ip:9870/

    7.启动yarn 
        1.启动yarn 
        start-yarn.sh 


    8.
    stop-all.sh  => rm 有问题的 
    start-all.sh 

    9.集群启动的脚本 
if [ $# -lt 1 ];then
    echo "参数不足"
    echo "Usage $0 start|stop"
    exit;
fi


case $1 in 
    "start")
    echo "===启动hadoop集群==="
    echo "===启动hdfs==="
    ssh bigdata22 "/home/hadoop/app/hadoop/sbin/start-dfs.sh"
    echo "===启动yarn==="
    ssh bigdata23 "/home/hadoop/app/hadoop/sbin/start-yarn.sh"
    ;;
    "stop")
    echo "===关闭hadoop集群==="
    echo "===关闭yarn==="
    ssh bigdata23 "/home/hadoop/app/hadoop/sbin/stop-yarn.sh"
    echo "===关闭hdfs==="
    ssh bigdata22 "/home/hadoop/app/hadoop/sbin/stop-dfs.sh"
    ;;
    *)
    echo "无效的参数"
    echo "Usage $0 start|stop"
    ;;
esac

    10.java进程查看脚本 
for host in bigdata22 bigdata23 bigdata24
do
    echo "====$host===="
    ssh $host "/home/hadoop/app/java/bin/jps | grep -v Jps"
done


hdfs api : 
    1.java 
    2.hdfs 命令 

hdfs 命令: 
    hdfs dfs 
    hadoop fs 

1.创建文件夹
    hadoop fs  -mkdir xx 

2.上传 
    hadoop fs  -put xx  xxx 

3.下载 
  hadoop fs  -get xxx xx 


4. cat 查看文件内容 
    URI => 
        local : file:/// 
        hdfs :  hdfs://    
5.mv 与cp 

6.ls 

7.查看文件大小 
    ls -h 
    du 

8.删除 

9.查看文件
    cat 
    text 

10.修改文件权限
    chmod 
    chown 

count 
test =>  **** 


[hadoop@bigdata22 data]$ hadoop fs -mv /1.log /2.log
[hadoop@bigdata22 data]$ hadoop fs -cp /2.log /1.log
[hadoop@bigdata22 data]$ hadoop fs -mkdir /data
[hadoop@bigdata22 data]$ hadoop fs -cp /2.log /data/3.log

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值