大数据Hadoop(一)


大数据引言

  1. 什么是大数据?

    体量很大的数据,起步存储当量为TB级或者日均数据增长GB级。
    在海量数据下,可以进行分析,挖掘,进而发现数据内在的规律,从而为企业或者国家创造价值。
    
  2. 大数据有什么特点?

    #4v特性
    1. Volume:体量大
    2. Variety:样式多 数据种类多2.1 结构化数据2.2 半结构化数据jsonxml2.3 非结构化数据图片 音频 视频
    3. Velocity:速度快
    4. Value:低价值密度的数据,挖掘出高价值。
    
  3. 大数据起源

    Google是最早面临大数据问题的公司,推出了第一个大数据解决方案。
    1. GFS    google File System 谷歌文件处理系统
    2. MapReduce
    3. BigTable (NoSQL 数据库)
    
  4. 大数据处理的核心数据类型

    文本数据
    
  5. 大数据的数据来源

    1. 公司系统运行产生的  日志 (Nginx,Log4j[埋点日志],数据库中的数据)
    2. 爬虫
    3. 行业大数据  电信  医疗  政府  金融
    4. 大数据交易
    

Hadoop框架

  1. 起源

    Doug Cutting 是Lucene(全文搜索技术  Solr  ES)、Nutch的作者,后续设计开发了Hadoop体系。
    Hadoop1.xHDFS(Hadoop Distributed File System)   对应   GFSMapReduce    对应   MapReduceHBase      对应   BigTabel
    apache组织正式开源Hadoop,并把Hadoop作为了顶级项目。
    
  2. Hadoop生态圈

    1. Hadoop Core (HDFS,MR MapReduce)
    2. Hadoop生态工具  (Hive,HBase)
    3. Hadoop辅助工具  (Flume,Sqoop,Oozie,Hue)
    
  3. 大数据核心技术

    1. HDFS 文件处理系统   (IO)  存数据  取数据
    2. MapReduce  编程,数据的计算
    3. Hive (HQL Hive Query Lanuage) 类似SQL 95%和SQL语法一致
    4. HBase (NoSQL) 存 取数据
    

构建Hadoop的伪分布式系统【HDFS,MapReduce】

(伪分布式系统:只需要一台虚拟机,简易的模拟集群的工作,熟悉hdfs运用)

  1. 什么是HDFS?

    HDFS 全称是Hadoop Distributed File System  hadoop分布式(cluser)文件存储系统。
    
  2. HDFS基本架构

  1. Hadoop伪分布式搭建[HDFS,Yarn]

    --以下安装是我的个人习惯,可根据个人需要进行调整
    /opt/models   原始文件(压缩文件)
    /opt/install  安装文件放置的位置
    
    1. linux服务器的基本配置设置ip,关闭防火墙,关闭selinux,配置主机名,主机与ip映射设置ip,关闭防火墙,关闭selinux,配置主机名,主机与ip映射设置ip: vi /etc/sysconfig/network-scripts/ifcfg-eth0  设置IPADDR关闭防火墙: service iptables stop关闭防火墙开机自启动: chkconfig iptables off关闭selinux: vi /etc/selinux/config  设置 SELINUX=disabled 配置主机名: vi /etc/sysconfig/network主机与ip映射:(建议两个都设置) linux:vi /etc/hostswindows: 在 C:\Windows\System32\drivers\etc目录下的 hosts 文件,使用记事本 或者 notepad++ 打开,进行添加: linux-ip linux主机名
    2. 安装jdk1.7+(在jdk压缩包所在目录下)rpm -ivh jdk-7u71-linux.x64.rpm  默认安装位置  /usr环境变量的配置vi /etc/profile   环境变量  linux  所有用户生效vi /.bash_profile  环境变量 当前用户生效 vi /.bashrc (bash_profile   bashrc 都是/root目录下的隐藏文件)JAVA_HOME=/usr/java/jdk1.7.0_71CLASSPATH=.PATH=$JAVA_HOME/bin:$PATH:$HOME/binexport JAVA_HOMEexport CLASSPATHexport PATHsource .base_profile
    

3. 安装hadooptar -zxvf hadoop-2.5.2.tar.gz -C /opt/install
4. Hadoop配置文件的配置  etc/hadoop4.1 hadoop-env.shexport JAVA_HOME=/usr/java/jdk1.7.0_714.2 core-site.xml<!--用于设置namenode并且作为java程序的访问入口--><property><name>fs.defaultFS</name><value>hdfs://hadoop2:8020</value></property><!--存储namenode持久化的数据,Datenode块数据--><!--手工创建$HADOOP_HOME/data/tmp--><property><name>hadoop.tmp.dir</name><value>/opt/install/hadoop-2.5.2/data/tmp</value></property>4.3 hdfs-site.xml<!--设置副本数量  默认是3  但是单节点测试,改成1--><property><name>dfs.replication</name><value>1</value></property>4.4 mapred-site.xml<!--yarn 与 MR相关--><property><name>mapreduce.framework.name</name><value>yarn</value></property>4.5 yarn-site.xml<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>4.6 slaves hadoop2
5. namenode的格式化 【第一次搭建hdfs集群时需要使用】目的作用:格式化hdfs系统,并且生成存储数据块的目录bin/hdfs namenode -format
6. 启动hadoop守护进程sbin/hadoop-daemon.sh start namenodesbin/hadoop-daemon.sh start datanodesbin/yarn-daemon.sh start resourcemanagersbin/yarn-daemon.sh start nodemanagersbin/hadoop-daemon.sh stop namenodesbin/hadoop-daemon.sh stop datanodesbin/yarn-daemon.sh stop resourcemanagersbin/yarn-daemon.sh stop nodemanager
7. 测试验证安装成果ps -ef | grep javajps 查看相关4个进程通过网络进行访问测试http://hadoop2:8020   yarnhttp://hadoop2:50070  hdfs
  1. Hadoop HDFS运行过程中的错误分析

    查看日志tail -nxxx 文件名$HADOOP_HOME/logs [hadoop-用户名-namenode-主机名.log]hadoop-root-namenode-hadoop2.loghadoop-root-datanode-hadoop2.logyarn-root-resourcemanager-hadoop2.logyarn-root-nodemanager-hadoop2.log
    

HDFS的client访问

  1. Shell访问(HDFS 树状文件系统 类似于 linux)

    1. 查看目录结构bin/hdfs dfs -ls 路径bin/hdfs dfs -ls /
    2. 创建文件夹bin/hdfs dfs -mkdir /sunsbin/hdfs dfs -mkdir -p /liuh/xjr
    3. 本地上传文件到hdfs中bin/hdfs dfs -put /root/hdfs/data /sunsbin/hdfs dfs -put local_path hdfs_path
    4. 查看文件内容bin/hdfs dfs -text /suns/databin/hdfs dfs -cat /suns/data
    5. 删除bin/hdfs dfs -rm /suns/data注意:可以修改垃圾桶的存活时间core-site.xml<property><name>fs.trash.interval</name><value>10</value></property>垃圾桶的位置:/user/root/.Trash/190522010000/suns/datahdfs:有权限hdfs-site.xml<property><name>dfs.permissions.enabled</name><value>false</value></property>
    6. 删除非空文件夹bin/hdfs dfs -rmr /suns
    7. 从hdfs下载文件到本地bin/hdfs dfs -get /suns/data /root/hdfsbin/hdfs dfs -get hdfs_path local_path8. cp  mv
    
    制定 hadoop的启停脚本
    shell脚本 当前目录执行方式   ./hadoop-start.sh绝对路径执行shell  /opt/install/hadoop-2.5.2/hadoop-start.sh
    linux   hadoop-start.sh#!bin/bashsbin/hadoop-daemon.sh start namenodesbin/hadoop-daemon.sh start datanodesbin/yarn-daemon.sh start resourcemanagersbin/yarn-daemon.sh start nodemanagerhadoop-stop.shsbin/hadoop-daemon.sh stop namenodesbin/hadoop-daemon.sh stop datanodesbin/yarn-daemon.sh stop resourcemanagersbin/yarn-daemon.sh stop nodemanager
    
  2. java代码的方式

    1. 准备

      1. windows 系统 安装java  安装IDE(IDEA)
      2. maven 安装,并且设置 阿里云镜像加压缩,设置环境变量(MAVEN_HOME,M2_HOME),修改配置文件(本地库的位置,添加阿里云镜像)
      3. IDEA 模块 HDFS java访问
      
    2. 编程

      1. hdfs相关jar,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-client -->
        <dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</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>
        
      2. HDFS访问过程中核心的API

        1. Configuration 配置  什么是hdfs的配置? 进行core-site.xml hdfs-site.xml 配置信息的读取操作
        2. FileSystem 代表的就是 HDFS分布式文件系统
        3. IOUtils IO操作的工具类
        
      3. 代码

        public class TestHDFS {@Testpublic void test1() throws Exception{Configuration conf = new Configuration();conf.set("fs.defaultFS","hdfs://hadoop2:8020");FileSystem fileSystem = FileSystem.get(conf);FSDataInputStream fsDataInputStream = fileSystem.open(new Path("/liuh/xiaohei/data"));IOUtils.copyBytes(fsDataInputStream, System.out, 1024, true);}@Testpublic void test2() throws Exception {FileSystem fileSystem = getFileSystem();FSDataInputStream fsDataInputStream = fileSystem.open(new Path("/liuh/xiaohei/data"));IOUtils.copyBytes(fsDataInputStream,System.out,1024,true);}@Testpublic void test3()throws Exception {Configuration conf = new Configuration();conf.addResource(new Path("C:\\Users\\Administrator\\IdeaProjects\\hadoop_code\\hadoop-hdfs-baizhiedu\\src\\main\\resources\\core-site.xml"));FileSystem fileSystem = FileSystem.get(conf);FSDataInputStream fsDataInputStream = fileSystem.open(new Path("/liuh/xiaohei/data"));IOUtils.copyBytes(fsDataInputStream, System.out, 1024, true);}@Testpublic void test4()throws Exception{FileSystem fileSystem = getFileSystem();FSDataInputStream fsDataInputStream = fileSystem.open(new Path("/liuh/xiaohei/data"));//System.out  换成 文件的输出流FileOutputStream fileOutputStream = new FileOutputStream("f://suns.txt");IOUtils.copyBytes(fsDataInputStream,fileOutputStream,1024,true);}@Testpublic void test5()throws Exception{//FileInputStream 读入文件内容FileInputStream fileInputStream = new FileInputStream("f://xiaojr.txt");//HDFS FileSystem.create();FileSystem fileSystem = getFileSystem();FSDataOutputStream fsDataOutputStream = fileSystem.create(new Path("/liuh/xiaohei/data1"));//IOUtils IO处理IOUtils.copyBytes(fileInputStream,fsDataOutputStream,1024,true);}@Testpublic void test6()throws Exception{FileSystem fileSystem = getFileSystem();boolean isOk = fileSystem.mkdirs(new Path("/xiaojr"));System.out.println("创建目录 "+isOk);//fileSystem.delete(new Path(""),true);}private FileSystem getFileSystem() throws Exception{Configuration conf = new Configuration();conf.set("fs.defaultFS","hdfs://hadoop2:8020");FileSystem fileSystem = FileSystem.get(conf);return fileSystem;}}
        

Hadoop体系下配置文件优先级详解

1. *-default.xml  share  jarcore-default.xml  HDFS整体设置 设置NameNode入口,namenode持久化,存储位置hdfs-default.xml  设置与HDFS相关信息  副本数量  块大小  hdfs访问权限yarn-default.xml  与yarn相关mapred-default.xml  与mapred相关2. *-site.xml   etc/hadoop# 如果site.xml 对default对应的key进行了覆盖,那么就按照site的设置,进行处理,如果没有覆盖,则按照  default处理core-site.xml  HDFS整体设置  设置namenode入口,namenode持久化,存储位置hdfs-site.xml  设置与HDFS相关信息  副本数量 块大小  hdfs访问权限yarn-site.xml  与yarn相关mapred-site.xml  与mapred相关3. 代码 *-site.xml  配置4. 程序中Configuration.set()

HDFS分布式集群的构建

  1. HDFS分布式集群面临的问题


2. ssh免密登录

1. 如何生成公私钥对ssh-keygen -t rsa  最终放置到 ~/.ssh目录
2. 如何把client的公钥,发送给远端主机ssh-copy-id root@ip


3. HDFS分布式集群的搭建【简单版】

  1. 机器的选型

    1. NameNode选择   内存大
    2. DataNode选择   硬盘大
    # namenode节点同时充当datanode
    
  2. 3个点

    1. IP地址  防火墙  selinux  主机名  主机映射  jdk  ssh免密登录
    2. hadoop 每个节点都要安装hadoop,并且保证配置文件一致注意:老机器化  删除  hadoop_home/data/tmp 内容
    3. 按照分布式集群的要求,书写配置文件,同步集群的每一个节点hadoop-env.shexport JAVA_HOME=/usr/java/jdk1.7.0_71core-site.xml<!--用于设置namenode并且作为Java程序的访问入口---><property>     <name>fs.defaultFS</name><value>hdfs://hadoop:8020</value></property><!--存储NameNode持久化的数据,DataNode块数据——><!--手工创建$HADOOP_HOME/data/tmp--><property><name>hadoop.tmp.dir</name><value>/opt/install/hadoop-2.5.2/data/tmp</value></property>hdfs-site.xml<!--可选择保留--><property><name>dfs.permissions.enabled</name><value>false</value></property>yarn-site.xml [一样]mapred-site.xml [一样]slaves hadoop2hadoop3hadoop4
    4. 格式化【namenode】bin/hdfs namenode -format
    5. 启动集群【namenode】sbin/start-dfs.shsbin/stop-dfs.sh# shell 命令  执行在namenode所在节点
    # java代码访问  不存在任何影响
    

大数据Hadoop(一)相关推荐

  1. 2021年大数据Hadoop(三十):Hadoop3.x的介绍

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Hadoop3.x的介绍 介绍 Hadoop 3.0新特性 ...

  2. 2021年大数据Hadoop(二十九):​​​​​​​关于YARN常用参数设置

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 关于yarn常用参数设置 设置container分配最小内 ...

  3. 2021年大数据Hadoop(二十七):YARN运行流程

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Yarn运行流程 本系列历史文章 2021年大数据Hado ...

  4. 2021年大数据Hadoop(二十六):YARN三大组件介绍

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Yarn三大组件介绍 ResourceManager No ...

  5. 2021年大数据Hadoop(二十五):YARN通俗介绍和基本架构

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 YARN通俗介绍和基本架构 Yarn通俗介绍 Yarn基本 ...

  6. 2021年大数据Hadoop(二十二):MapReduce的自定义分组

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 MapReduce的自定义分组 需求 分析 实现 第一步: ...

  7. 2021年大数据Hadoop(十五):Hadoop的联邦机制 Federation

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Hadoop的联邦机制 Federation 背景概述 F ...

  8. 2021年大数据Hadoop(十四):HDFS的高可用机制

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 HDFS的高可用机制 HDFS高可用介绍 组件介绍 Nam ...

  9. 2021年大数据Hadoop(一):​​​​​​​Hadoop介绍

    2021大数据领域优质创作博客,带你从入门到精通,该博客每天更新,逐渐完善大数据各个知识体系的文章,帮助大家更高效学习. 有对大数据感兴趣的可以关注微信公众号:三帮大数据 Hadoop介绍 Hadoo ...

  10. 王家林 云计算分布式大数据Hadoop实战高手之路第七讲Hadoop图文训练课程:通过HDFS的心跳来测试replication具体的工作机制和流程...

    这一讲主要深入使用HDFS命令行工具操作Hadoop分布式集群,主要是通过实验的配置hdfs-site.xml文件的心跳来测试replication具体的工作和流程. 通过HDFS的心跳来测试repl ...

最新文章

  1. Pandas读取csv时 设置列名
  2. java使用集合存储过程_详解java调用存储过程并封装成map
  3. 【形式化方法:VDM++系列】4.VDM实战1——铁路费用计算
  4. java压缩成.tar_java压缩tar.gz | 学步园
  5. html侧滑菜单mui,mui侧滑菜单点击含有mui-action-menu类的控件无法实现侧滑
  6. matlab运动背景位移矢量,位移云图三维位移矢量图
  7. erp系统是什么的简称
  8. Flutter实战一Flutter聊天应用(十九)
  9. 【原创】Kakfa api包源代码分析
  10. MVC4网站发布到windows server 2003服务器
  11. bzoj 1787 bzoj 1832: [Ahoi2008]Meet 紧急集合(倍增LCA)
  12. AIDL的简单使用和注意事项
  13. 可拖动组件 v-drag vue
  14. java经典算法(三)---zws
  15. css文字向右对齐_css怎么设置右对齐?
  16. 机器学习——神经网络(三):线性神经网络
  17. 惠普笔记本需要按下FN键,F5起作用;惠普笔记fn键开启和关闭功能;则无需FN可直接使用F1-F12功能按键。
  18. 浏览器JSON的插件(JSON-handle)使用问题
  19. LayoutInflater.inflate()方法的深入理解
  20. 医疗电子平台选择:FPGA、ARM、X86、DSP还是GPU

热门文章

  1. C#将PPT文件转换成图片并轮播展示
  2. 在JointJS元素中使用html
  3. IoC 和 AOP讲解
  4. 树莓派学习笔记——wiringPi简介、安装和管脚说明
  5. Stata:史上最全t-test检验-tost
  6. 土地主大威德之模板方法模式
  7. CPU卡程序设计实例(十二)ESAM模块字节接收函数
  8. 知数堂mysql实战优化,成为专业MySQL DBA
  9. SAP 国家代码为CN的客户主数据邮政编码只能是六位数字的设置
  10. Qt 停靠悬浮窗口 使用实例