zoukankan      html  css  js  c++  java
  • 大数据(简介及其伪分布搭建)

    互联网行业技术发展

     

    大数据(BigData)
    1. 什么是大数据?

      数据量很大的数据,量级TB级或者日均增长GB级
    2. 大数据的特点 (4V)?

      Volume 数据量大 
      Variety 数据种类多
             结构化数据:  
             半结构化数据: xml json
             无结构化数据: 音频 视频 图像
      Velocity 快速处理
             相对快
      value 在大量没有价值的数据中,抽取出数据的价值
    3. 大数据的来源?

      本系统自己产生的数据(大型公司)   开发日志  Nginx日志
      爬虫(免费)
      行业大数据(交通,医疗,政府,金融,电信)
    4. 大数据的类型?

      目前处理的大数据类型,都是文本数据
    5. 大数据面临的问题?[重点]

      1. 如何存储

         

      2. 计算(CPU 内存 = 资源(算力))

    大数据技术的发展演变
    1. 2003年Google 发布3篇论文,解决大数据问题

      1. GFS  Google File System
      2. MapReduce
      3. BigTable
    2. Hadoop是基于Google3篇论文的思想,应用java编程语言实现

      1. Hadoop之父 Doug Cutting
      2. HDFS (Hadoop Distributed File System) 对应 GFS
      3. MapReduce 对应 MapReduce
      4. HBase     对应 BigTable
    3. Hadoop的发行版本

      1. Apache组织提供的开源 免费版  [重点]
      2. Cloudera (CDH) Hadoop之父 4000美元 1个节点 [重点]
      3. Hortonworks 12000美元 10个节点
    Hadoop的环境搭建
    1. Notepad++远程操作linux下的远程文件

      NppFTP插件

    2. 环境基础

      1. linux64位
      2. JDK 1.7+
      1. 网络的基本设置

        1. 修改网卡

        vi /etc/sysconfig/nework-script/ifcfg-eth0

     

    1. 从新启动网卡

      service network start|stop|restart # 设置网卡
    2. 关闭防火墙

      # 临时关闭防火墙
      service iptables stop

      # 永久关闭防火墙
      chkconfig iptables off
    3. 修改主机名

      vi /etc/sysconfig/network
    4. 主机名映射

      windows
      C:WindowsSystem32driversetchosts
      192.168.64.10 hadoop
      linux
      vi /etc/hosts
    5. 关闭Selinux

      Selinux 是红帽子的安全套件  RedHat = CentOS 
      vi /etc/selinux/config
      SELINUX=disabled
    6. 规范Linux中软件的安装目录

      #原始安装文件 
      /opt/models
      #安装目录
      1. 如果软件有默认安装目录则默认安装 /usr
      2. 如果需要指定安装目录 统一放置在 /opt/install文件夹
    7. 安装JDK

      #rpm
      rpm -ivh jdkxxxxx

      vi .bash_profile
      JAVA_HOME=/usr/java/jdk1.7.0_71
      CLASSPATH=.
      PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
      export JAVA_HOME
      export CLASSPATH
      export PATH
      source .bash_profile

    9.Hadoop安装

    #hadoop的伪分布式环境
    1. 上传hadoop2.5.2压缩包 /opt/models
    2. 解压缩 /opt/install
    3. 配置文件配置   etc/hadoop
     1. hadoop-env.sh
           export JAVA_HOME=/usr/java/jdk1.7.0_71
        2. core-site.xml
           <property>       
                <name>fs.default.name</name>
                <value>hdfs://hadoop1.lhcedu.com:8020</value>
           </property>
           <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/install/hadoop-2.5.2/data/tmp</value>
           </property>
        3. hdfs-site.xml
           <property>       
               <name>dfs.replication</name>
               <value>1</value>
           </property>
        4. yarn-site.xml 
           <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
           </property>
        5. mapred-site.xml
           <!--改名 mapred-site.xml.template 该名称 mapred-site.xml-->
          <property>                        
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
           </property>

    4. namenode的格式化
      相对于hadoop安装路径 /opt/install/hadoop-2.5.2
      bin/hdfs namenode -format
    5. 启动hadoop的后台进程
      sbin/hadoop-daemon.sh start namenode
      sbin/hadoop-daemon.sh start datanode
      sbin/yarn-daemon.sh start resourcemanager
      sbin/yarn-daemon.sh start nodemanager
    6. 验证效果
       ps -ef | grep java
       jps #底层 jdk提供 javac java javadoc
       http://hadoop:50070
    1. Hadoop中HDFS的基本使用

     

        1.shell命令

    bin/hdfs dfs -xxx  [新版]
    bin/hadoop fs -xxx [旧版]
    #查看hdfs上某一个目录中的文件
    bin/hdfs dfs -ls /
    ​
    #hdfs中创建目录
    bin/hdfs dfs -mkdir /user
    bin/hdfs dfs -mkdir -p /user
    ​
    #上传文件 linux ---> hdfs   /root/hdfs/data文件 上传 hdfs
    bin/hdfs dfs -put /root/hdfs/data  /xiaohei/xiaojr
    ​
    #查看文件内容
    bin/hdfs dfs -text /xiaohei/xiaojr/data
    bin/hdfs dfs -cat /xiaohei/xiaojr/data
    ​
    #下载文件
    bin/hdfs dfs -get /xiaohei/xiaojr/data  /root
    ​
    #删除 bin/hdfs dfs -rm -r xxxx
    bin/hdfs dfs -rm /xiaohei/xiaojr/data
    bin/hdfs dfs -rm /xiaohei
    ​
    #复制,移动
    bin/hdfs dfs -cp
    bin/hdfs dfs -mv
     

    Java Client访问

    #HDFS Client 
    Configuration
    FileSytem
    IOUtils

    maven

    <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
        <dependency>
          <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-common</artifactId>
          <version>2.5.2</version>
        </dependency><!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
        <dependency>
          <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-hdfs</artifactId>
          <version>2.5.2</version>
        </dependency><!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
        <dependency>
          <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-client</artifactId>
          <version>2.5.2</version>
        </dependency>

    java

    ## HDFS默认只能进行读操作,如果进行写操作则会有权限的控制
    hdfs-site.xml 额外的配置
    <property>      
          <name>dfs.permissions.enabled</name>
          <value>false</value>
     </property>


    /*从远端HDFS中下载文件到本地*/
     @Test
      public void test1() throws Exception{
    ​
            Configuration configuration = new Configuration();
            configuration.set("fs.default.name","hdfs://hadoop:8020");
    ​
            FileSystem fileSystem = FileSystem.get(configuration);
    ​
    ​
            FSDataInputStream inputStream = fileSystem.open(new Path("/test/data"));
    ​
    ​
            IOUtils.copyBytes(inputStream,System.out,1024,true);
      }
    ​
    /*本地文件中*/
    @Test
        public void test2() throws Exception{
            Configuration configuration = new Configuration();
            configuration.set("fs.default.name","hdfs://hadoop:8020");
    ​
            FileSystem fileSystem = FileSystem.get(configuration);
    ​
            FSDataInputStream inputStream = fileSystem.open(new Path("/test/data"));
    ​
            FileOutputStream outputStream = new FileOutputStream("d:\suns.txt");
    ​
            IOUtils.copyBytes(inputStream,outputStream,1024,true);
    ​
    ​
        }
    ​
    /*上传文件*/
        @Test
        public void test3()throws Exception {
            Configuration configuration = new Configuration();
            configuration.set("fs.default.name","hdfs://hadoop:8020");
    ​
            FileSystem fileSystem = FileSystem.get(configuration);
    ​
            FSDataOutputStream outputStream = fileSystem.create(new Path("/test/test1"));
    ​
            FileInputStream inputStream = new FileInputStream("d:\suns.txt");
    ​
            IOUtils.copyBytes(inputStream,outputStream,1024,true);
        }
    ​
    @Test
      public void test4()throws Exception {
            Configuration configuration = new Configuration();
            configuration.set("fs.default.name","hdfs://hadoop:8020");
    ​
            FileSystem fileSystem = FileSystem.get(configuration);
    ​
            //fileSystem.delete();
    //fileSystem.mkdirs(new Path("/xiaojr/xiaowb"));
    //        RemoteIterator<LocatedFileStatus> locatedFileStatusRemoteIterator = fileSystem.listFiles(new Path("/test"), true);
    //
    //         while(locatedFileStatusRemoteIterator.hasNext()){
    //             LocatedFileStatus next = locatedFileStatusRemoteIterator.next();
    //             System.out.println(next);
    //         }
    ​
        }
    ​

    练手:用户上传本地文件到hdfs,如果文件不存在,则上传,如果文件已经存在则在控制台打印存在,或者jsp页面alert

    思路:页面选择提交文件,controller接收multifile文件,MD5得到文件的唯一加密码,并将加密码存入redis,key为加密码,值为文件名

      上传至hdfs前,判断redis是否有key,有则不上传,没有则调api上传即可

    难点:maven集成redis,MD5的加密

    代码:https://github.com/lhcmmd/hadoop/tree/master/hadoop-day1

    
    
  • 相关阅读:
    ViewData,ViewBag,TempData
    http和https
    Array与ArrayList
    程序员与书和视频
    技术学习的方法研究
    文章发布声明
    面向对象JAVA多态性
    嵌入式开发总结
    CSDN博客代码显示乱码的原因
    将Windows的桌面目录设置到D盘
  • 原文地址:https://www.cnblogs.com/lhc-hhh/p/10324215.html
Copyright © 2011-2022 走看看