AmosCloud

Library

Have a Question?

If you have any question you can ask below or enter what you are looking for!

day01_Hadoop

Java 编程语言

  • 写程序

    • 机械计算机
    • 电子计算机 计算性能和处理核心之间的关系是线性关系
    • 程序 计算机的二进制运算
    人类语言 ->  编程语言  -> 机器语言 -> 电子指令集
                    |           |
                    Java        汇编语言
                    |
                    C/C++/C#
  • 量子计算机

JavaWeb JavaEE

  • 网站

  • 客户端(浏览器)

  • 服务端(请求响应-增删改查)

大数据

  • 管理数据的生命周期

    • 产生
    • 采集
    • 存储 HDFS ElasticSearch MongDB Mysql Orcale DB2
    • 计算/分析
    • 展示
  • Hadoop 集群的分类

    • apache
    • CDH Cloudera
    • HDP Hortonwork
    • FI HD 华为

搭建三个节点的Hadoop集群

  1. 前置条件

    • 3台Centos7服务器

    • ssh免密登陆

      # 配钥匙
      ssh-keygen -t rsa
      # 发钥匙
      ssh-copy-id hostname
    • 安装JDK1.8

      # 下载上传解压安装包
      # 配置JAVA_HOME环境变量
      /etc/profile
      # 声明全局变量
      export JAVA_HOME=/opt/jdk1.8
      export PATH=.:$JAVA_HOME/bin:$PATH
  2. 上传解压安装包

  3. 修改配置文件

    两类文件
    env.sh 配置一些环境变量
    site.xml 配置一些程序的运行参数
    <!-- hadoop -->
    hadoop-env.sh
    export JAVA_HOME=/opt/jdk1.8
    core-site.xml
    <configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://test01:9000/</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop-2.7.7/data</value>
    </property>
    </configuration>
    <!-- HDFS 服务-->
    hdfs-site.xml
    <configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>test03:50090</value>
    </property>
    </configuration>
    <!-- MapReduce 框架-->
    mapred-env.sh
    export JAVA_HOME=/opt/jdk1.8
    mapred-site.xml
    <configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>local</value>
    </property>
    </configuration>
    <!-- Yarn 服务
    集群角色:
    主:ResourceManager
    从:NodeManager
    -->
    yarn-env.sh
    export JAVA_HOME=/opt/jdk1.8
    yarn-site.xml
    <configuration>
    <!-- 配置yarn的主节点主机名 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>test02</value>
    </property>
    </configuration>
    <!-- 配置集群的从节点 -->
    slaves
    test01
    test02
    test03
  4. 配置环境变量

    echo 'export HADOOP_HOME=/opt/hadoop-2.7.7' >> /etc/profile
    echo 'export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH' >> /etc/profile
  5. 启动集群

    # HDFS
    # 格式化HDFS
    hadoop namenode -format
    # 启动HDFS
    # 1.全部启动
    start-hadoop-all.sh
    # 2.按服务启动
    start-dfs.sh
    # 3.按实例启动
    hadoop-daemon.sh  start|stop namenode|datanode|secondarynamenode
  6. 查看启动状态

    • 写一个脚本完成集群jps的查看
      #!/bin/bash
      # ↑指定当前脚本使用/bin/bash解释器来进行运行
      # 在集群的所有机器查看jps
      # for 循环变量 in 集合
      # do
      # 循环体
      # done
      # 定义一个字符串用来存储所有机器的主机名
      HOSTS="test01 test02 test03"
      # 循环
      for HOST in $HOSTS
      do
      echo "当前${HOST}的Java进程情况"
      ssh $HOST '/opt/jdk1.8/bin/jps'
      echo "-----------------------"
      done
  • 通常大规模集群会使用API的方式读取每个机器的进程
  • java、c、python读取系统的进程信息,过滤处理后展示在页面上
  • 常用两个命令组合
    • 查看进程信息 ps -ef | grep pid或者name
    • 查看端口占用 netstat -anp | grep pid或者port

HDFS命令行操作

Usage: hadoop fs [generic options]
        [-appendToFile <localsrc> ... <dst>]
        [-cat [-ignoreCrc] <src> ...]
        [-checksum <src> ...]
        [-chgrp [-R] GROUP PATH...]
        [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
        [-chown [-R] [OWNER][:[GROUP]] PATH...]
        [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]
        [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
        [-count [-q] [-h] <path> ...]
        [-cp [-f] [-p | -p[topax]] <src> ... <dst>]
    #创建快照  快照相当于是一个目录或者文件的备份
    # 当文件或者目录发生改变后,可以通过快照进行恢复
        [-createSnapshot <snapshotDir> [<snapshotName>]]
        [-deleteSnapshot <snapshotDir> <snapshotName>]
        [-df [-h] [<path> ...]]
        [-du [-s] [-h] <path> ...]
        [-expunge]
        [-find <path> ... <expression> ...]
        [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
        [-getfacl [-R] <path>]
        [-getfattr [-R] {-n name | -d} [-e en] <path>]
        [-getmerge [-nl] <src> <localdst>]
        [-help [cmd ...]]
        [-ls [-d] [-h] [-R] [<path> ...]]
        [-mkdir [-p] <path> ...]
        [-moveFromLocal <localsrc> ... <dst>]
        [-moveToLocal <src> <localdst>]
        [-mv <src> ... <dst>]
        [-put [-f] [-p] [-l] <localsrc> ... <dst>]
        [-renameSnapshot <snapshotDir> <oldName> <newName>]
        [-rm [-f] [-r|-R] [-skipTrash] <src> ...]
        [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
        [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
        [-setfattr {-n name [-v value] | -x name} <path>]
        # 设置文件的副本数量
        [-setrep [-R] [-w] <rep> <path> ...]
        [-stat [format] <path> ...]
        [-tail [-f] <file>]
        [-test -[defsz] <path>]
        [-text [-ignoreCrc] <src> ...]
        [-touchz <path> ...]
        [-truncate [-w] <length> <path> ...]
        [-usage [cmd ...]]

You must be logged in to post a comment.