hadoop安装和HDFS基础

大数据生态系统:

  1. 存储:hadoop hdfs

  2. 计算引擎:

  • map/reduce v1

  • map/reduce/v2(map/reduce on yarn)

  • Tez

  • spark

  1. Impala Pesto Drill 直接跑在hdfs上
  • pig(脚本方式)hive(SQL语言)跑在map/reduce上

  • hive on lez/sparkSQL

  1. 流式计算-storm

  2. Kv store|
    cassandra mongodb hbase

  3. Tensorflow Mahout

  4. Zookeeper Protobuf

  5. sqoop kafka flume…

虚拟机常用的软件:

  • VMWare
  • VirtualBox

需要5个软件(百度即可下载):

  • VirtualBox(虚拟机软件)
  • centos(linux系统)
  • hadoop(linux版)
  • jdk(linux版)
  • xshell(远程登录软件附带xftp上传文件的)

  1. 将软件下载好后,首先将VirtualBox安装好,
  • 点击新建:
    在这里插入图片描述
  1. 设置内存大小,默认就可以

  2. 创建虚拟硬盘,默认的即可,

    #选择动态分配
    #文件位置和大小:默认即可,后期8G不够用,在扩就行

  3. 安装光驱:

  1. 启动:
  • 启动过程中会自动检查磁盘,按Esc跳过即可 。jk
  • 从windos往liunx点鼠标的时候会弹一框, 框的意思是捕获鼠标,意思就是,这个时候你鼠标的操作是在liunx中进行的,这个时候鼠标是出不来的,要出来按Ctrl键就能出来了。
  1. 安装界面:
  • 选中文(自行决 定)
  • 在安装位置图标上有一个感叹号,点进去在点完成即可。
  • 有一个软件选择按钮,点进1去,在做服务器模拟的时候,最小安装时不够的,所以我们选择:基础设施服务器,点完成。
  1. 点开始安装:
  • 安装的同时设置一下root密码(如果密码简单需要点击两次完成)
  • 等待,安装完成之后需要重启机器,点击重启后就可以用了
  1. 重启后:
  • 登录

  • 为了与Windows连接起来查看liunxIP

    t:3.jpg

  1. 我们配置一个IPv4的地址,让他和Windows通讯:
  • 安装完VirtualBox之后我们的电脑上会出现:

    t:4.jpg

  • 点击右键属性,下拉框中找到{Internet 协议版本}点进去,看到其IP地址为192.168.56.xxx(IP可随意更改),我们根据192.168.56网段来配置

  • 设置IP命令:

    vim /ect/sysconfig/network-scripts/ifcfg-eth0

  • 没用的删掉,写入,保存 :

    t:6.jpg

  • 设置网关命令:
    vim /etc/sysconfig/network

  • 写网关IP可上网(不加#号去掉,#号是注释):

    t:8.jpg

  1. 测试:
  • liunx:ping一下Windows机器:ping+IP地址

  • Windows:Windows ping一下liunx:ping+IP地址

  1. 将JDK和VirtualBox用Xshell上传到虚拟机。
  • 安装命令:rpm -ivh jdk-8u91-liunx-x64.rpm
  1. 验证java是否装好了
  • 出现了各个包的信息就是装好了

    t:10.jpg

安装hadoop

  1. 解压:

命令:tar -xvf hadoop-2.7.3.tar.gz

  1. 配置hadoop
  1. 将hadoop执行命令的路径加入到环境变量中
  • 命令:vim /etc/profileh
    在最后一行插入

export PATH = $PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

  • 执行一下:source /etc/profile要不然不起作用。
  1. 找到虚拟机图标右键复制即可复制虚拟机(全部复制)

    需要将复制出来的三台机器的IP地址更改。

  2. 启动hadoop。

  • 在hadoop目录下有一个core-site.xml配置文件,对其进行配置是为了知道master位于那一台机器上被谁管理的

在这里插入图片描述

  • 在最后加入,加入后就可以启动hadoop了

    t:14.jpg

  1. 我们修改一下host文件,(知道每台对应的IP)
  • 命令:vim /etc/host

    t:15.jpg

  1. 启动master和slave
  • master(进程中看到nameNode就是启动了):
    t:16.jpg

  • slace(进程中看到dateNode就是启动了):
    t:17jpg

  • 逻辑关系:

    t:18jpg

HDFS初识

  • 用来存文件的,有一台坏了的话,不会妨碍其他的对外提供服务

物理和逻辑架构

在这里插入图片描述

HDFS架构

在这里插入图片描述

启动集群

  1. 在master上启动hadoop-daemon.sh start namenode
  2. 在slave上启动hadoop-daemon.sh start datanode
  3. 用jps指令观察执行结果
  4. 用hdfs dfsadmin -report观察集群配置情况
  5. hadoop fs -rm/rilename
  6. 通过heep://192.168.56.100:50070界面观察集群运行情况
  7. 用hadoop-daemon.sh stop…手动关闭集群

对集群进行集中管理

  • 在/usr/local/hadoop/etc/hadoop 的目录下有一个 slave文件,他里面记录着当前这台namenode管理者多少台datanode,每台datanode式位于那台机器上,我们可以更改里面的内容,有多少台datanode就添加多少台

1.修改master上/etc/hadoop/slave文件,每一个slave占一行

2. 使用start-dfs.sh启动集群,并观察结果,使用stop-dfs.sh停止集群

3. 配置免密SSH远程登录

1.cd

2.is -la

3.cd .ssh

4.ssh-keygen -t rsa(四个回车)

5.会用rsa算法生成私钥id_rsa和公钥id_rsa.pub

6.ssh-copy-id slavex

7.再次ssh slave1

8.此时应该不在需要密码

4.重新使用start-dfs.sh启动集群

5.使用hdfs dfs 或者hadoop fs 命令对文件进行增删改查

  • hadoop fs -ls/

  • hadoop fs -put file/

  • hadoop fs -mkdir /dimame

  • hadoop fs -text /filename

  • hadoop fs -rm /filename

6.hadoop文件默认的存储位置

  • 但是tmp目录会不定时被系统进行清除,如果不自己指定存储位置的话,就会时而好用,时而不好用,所以真正程序需要建议更改,不然会丢失数据

    cd /tmp(临时文件)

7.我们来写程序,做远程访问

  • 使用HTTP协议:

      public static void main(String[] args) throws Exception{
      	URL url = new URL("http://www.baidu.com");
      	InputStream in = url.openStrean();
      	//4096指的是他的缓冲区是多大,
      	//true指的是读完输入流然后对他进行自动化的关闭
      	IOUtils.copyBytes(in,System.out,4096,true);
      }
    
  • 使用HDFS协议:

      public static void main(String[] args) throws Exception{
      	//FsUrlStreamHandlerFactory(),指明了如果遇到hdfs就讲URL地址交给他处理
      	URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
      	URL url = new URL("hdfs://192.168.56.100:9000/hello.txt");
      	InputStream in = url.openStrean();
      	//4096指的是他的缓冲区是多大,
      	//true指的是读完输入流然后对他进行自动化的关闭
      	IOUtils.copyBytes(in,System.out,4096,true);
      }
    
  • 实现增删改查

      public static void main(String[] args) throws Exception{
      	configuration conf = new Configuration();
      	conf.set("fs.defaultFS","hdfs://192.168.56.100:9000");
      	fileSystem fileSystem = FileSystem.get(conf);
    
      	//mkdirs创建目录(在根目录下创建一个叫msb的目录)
      	boolean success = fileSystem.mkdirs(new Path("/msb"));
      	System.out.println(success);
    
      	//判断文件是否存在
      	success = fileSystem.exists(new Path("/hello.txt"));
      	System.out.println(success);
    
      	//删除目录
      	success = fileSystem.delete(new Path("/msb"),true);
      	System.out.println(success);
    
      	//判断文件目录是否存在
      	success = fileSystem.exists(new Path("/msb"));
      	System.out.println(success);
    
      	//上传数据
      	FSDataOutPutStream out =fileSystem.create(new Paht("/test.data"),true);
      	FileInputStream fis = new FileInputStream("c:/test/core-site.xml");
      	IOUtils.copyBytes(fis,out,4096,true);
      }
    

    【通知】618狂欢夜(倒计时开始啦)
    主讲老师:马士兵老师、前阿里大牛、前京东大牛等多位技术大牛
    直播主题:
    1、深度揭秘京东面试流程,薪酬体系,技术架构!
    2、更有阿里(p7薪水)老师分享线程池技术!
    3、分享技术架构,分享面试经验,分享人生感悟!
    618技术狂欢夜,等你参加。
    直播时间:2019-6-18 19:30 腾讯课堂直播间等你!

小二先提前通知您咯,提前安排好自己的工作安排哦!
私信我,回复“222”领取上课链接!

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190618112327110.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l4eHlsdWN5,size_16,color_FFFFFF,t_70)

最后小编给大家准备了一些学习资料:

在这里插入图片描述

有需要的同学可以在评论区留言~~

猜你喜欢

转载自blog.csdn.net/yxxylucy/article/details/92772041