Hadoop介绍

1.1 Hadoop总结**

1.1.1 Hadoop组成
  1. 分布式存储 - HDFS
  2. 分布式计算 - MapReduce
  3. 资源管理 - Yarn
1.2.1 HDFS特点
  • HDFS优点

    1. 高可靠性
    2. 高扩展性
    3. 高效性
    4. 高容错性
    5. 低成本 :与一体机、商用数据仓库等相比,hadoop是开源的,项目的软件成本因此会大大降低
  • HDFS缺点

    1. 不能做到低延迟,由于hadoop针对高数据吞吐量做了优化,牺牲了获取数据的延迟,所以对于低延迟数据访问,不适合hadoop
    2. 不适合大量小文件存储,由于namenode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于namenode的内存容量,根据经验,每个文件、目录和数据块的存储信息大约占150字节
    3. 对于上传到HDFS上的文件,不支持修改文件,HDFS适合一次写入,多次读取的场景
2.1.1 HDFS相关
  • 名词

    1. NameNode
    2. DataNode
  • 写入文件流程

    1. 客户端将文件拆分成固定大小128M的块,并通知namenode
    2. namenode找到可用的datanode返回给客户端
    3. 客户端根据返回的datanode,对块进行写入
    4. 通过流水线管道流水线复制
    5. 更新元数据,告诉namenode已经完成了创建新的数据块,保证namenode中的元数据都是最新的状态
  • 读取文件流程

    1. 客户端向namenode发起独立请求,把文件名,路径告诉namenode
    2. namenode查询元数据,并把数据返回客户端
    3. 此时客户端就明白文件包含哪些块,这些块在哪些datanode中可以找到

3. 环境安装

3.1 安装方式

  • 单机模式

    只能启动MapReduce

  • 伪分布式

    能启动HDFS、MapReduce 和 YARN的大部分功能

  • 完全分布式

    能启动Hadoop的所有功能

3.2 安装JDK

3.2.1 JDK安装步骤
  1. 下载JDK安装包(下载Linux系统的 .tar.gz 的安装包)

    https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

  2. 更新Ubuntu源

    sudo apt-get update

  3. 将JDK压缩包解压到Ubuntu系统中 /usr/local/ 中

    sudo tar -zxvf jdk-8u251-linux-x64.tar.gz -C /usr/local/

  4. 将解压的文件夹重命名为 jdk8

    cd /usr/local/

    sudo mv jdk1.8.0_251/ jdk8

  5. 添加到环境变量

    cd /home/tarena/

    sudo gedit .bashrc

    在文件末尾添加如下内容:

    export JAVA_HOME=/usr/local/jdk8
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
    export PATH=.:$JAVA_HOME/bin:$PATH
    

    source .bashrc

  6. 验证是否安装成功

    java -version

    <出现java的版本则证明安装并添加到环境变量成功 java version “1.8.0_251”>

3.3 安装Hadoop并配置伪分布式

3.3.1 Hadoop安装配置步骤
  1. 安装SSH

    sudo apt-get install ssh

  2. 配置免登录认证,避免使用Hadoop时的权限问题

    ssh-keygen -t rsa (输入此条命令后一路回车)

    cd ~/.ssh

    cat id_rsa.pub >> authorized_keys

    ssh localhost (发现并未让输入密码即可连接)

    exit (退出远程连接状态)

  3. 下载Hadoop 2.10(374M)

    https://archive.apache.org/dist/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz

  4. 解压到 /usr/local 目录中,并将文件夹重命名为 hadoop,最后设置权限

    sudo tar -zxvf hadoop-2.10.0.tar.gz -C /usr/local/

    cd /usr/local

    sudo mv hadoop-2.10.0/ hadoop2.10

    sudo chown -R tarena hadoop2.10/

  5. 验证Hadoop

    cd /usr/local/hadoop2.10/bin

    ./hadoop version (此处出现hadoop的版本)

  6. 设置JAVE_HOME环境变量

    sudo gedit /usr/local/hadoop2.10/etc/hadoop/hadoop-env.sh

    把原来的export JAVA_HOME=${JAVA_HOME}改为
    export JAVA_HOME=/usr/local/jdk8

  7. 设置Hadoop环境变量

    sudo gedit /home/tarena/.bashrc

    在末尾追加

    export HADOOP_HOME=/usr/local/hadoop2.10
    export CLASSPATH=.:{JAVA_HOME}/lib:${HADOOP_HOME}/sbin:$PATH
    export PATH=.:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
    

    source /home/tarena/.bashrc

  8. 伪分布式配置,修改2个配置文件(core-site.xml 和 hdfs-site.xml)

  9. 修改core-site.xml

    sudo gedit /usr/local/hadoop2.10/etc/hadoop/core-site.xml

    添加如下内容

    <configuration>
        <property>
            <!--数据目录配置参数-->
            <name>hadoop.tmp.dir</name>
            <value>file:/usr/local/hadoop2.10/tmp</value>
        </property>
        <property>
            <!--文件系统配置参数-->
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
    </configuration>
    
  10. 修改hdfs-site.xml

    sudo gedit /usr/local/hadoop2.10/etc/hadoop/hdfs-site.xml

    添加如下内容

    <configuration>
        <property>
            <!--副本数量-->
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <!--namenode数据目录-->
            <name>dfs.namenode.name.dir</name>
            <value>file:/usr/local/hadoop2.10/tmp/dfs/name</value>
        </property>
        <property>
            <!--datanode数据目录-->
            <name>dfs.datanode.data.dir</name>
            <value>file:/usr/local/hadoop2.10/tmp/dfs/data</value>
        </property>
    </configuration>
    
  11. 配置YARN - 1

    cd /usr/local/hadoop2.10/etc/hadoop

    cp mapred-site.xml.template mapred-site.xml

    sudo gedit mapred-site.xml

    添加如下配置

    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    
  12. 配置YARN - 2

    sudo gedit yarn-site.xml

    添加如下配置:

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    
  13. 执行NameNode格式化

    cd /usr/local/hadoop2.10/bin

    ./hdfs namenode -format

    出现 Storage directory /usr/local/hadoop2.10/tmp/dfs/name has been successfully formatted 则表示格式化成功

  14. 启动Hadoop所有组件

    cd /usr/local/hadoop2.10/sbin

    ./start-all.sh

    启动时可能会出现警告,直接忽略即可,不影响正常使用

  15. 启动成功后,可访问Web页面查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件

    http://localhost:50070

  16. 查看Hadoop相关组件进程

    jps

    会发现如下进程

    NameNode
    DataNode
    SecondaryNameNode
    ResourceManager
    NodeManager
    
  17. 测试 - 将本地文件上传至hdfs

    hadoop fs -put 一个本地的任意文件 /

    hadoop fs -ls /

    也可以在浏览器中Utilities->Browse the file system查看

4. HDFS Shell操作

4.1 命令格式

hadoop fs 命令

4.2 常用命令汇总

  • 查看HDFS系统目录(ls)

    命令格式 :hadoop fs -ls 路径

    示例 :hadoop fs -ls /

  • 创建文件夹(mkdir)

    命令格式1 :hadoop fs -mkdir 绝对路径

    命令格式2 :hadoop fs -mkdir -p 绝对路径 (可递归创建文件夹)

    示例1 :hadoop fs -mkdir /test

    示例2 :hadoop fs -mkdir -p /test/stu

  • 上传文件(put)

    命令格式 :hadoop fs -put 本地文件 HDFS目录

    示例 :hadoop fs -put words.txt /test/

  • 下载文件(get)

    命令格式 :hadoop fs -get HDFS文件 本地目录

    示例 :hadoop fs -get /test/words.txt /home/tarena/

  • 删除文件或目录(rm)

    命令格式1 :hadoop fs -rm 文件或目录的绝对路径

    命令格式2 :hadoop fs -rm -r 目录 (删除文件夹要加 -r 选项)

    示例1 :hadoop fs -rm /test/words.txt

    示例2 :hadoop fs -rm -r /test

  • 查看文件内容(text)

    命令格式 :hadoop fs -text 文件绝对路径

    示例 :hadoop fs -text /test/words.txt

  • 移动(mv)

    命令格式 :hadoop fs -mv 源文件 目标目录

    示例 :hadoop fs -mv /test/words.txt /words.txt

  • 复制(cp)

    命令格式 :hadoop fs -cp 源文件 目标目录

    示例 :hadoop fs -cp /test/words.txt /words.txt

4.3 HDFS Shell操作练习

  1. 在本地 /home/tarena/ 下新建 students.txt

    touch /home/tarena/students.txt

  2. 在students.txt中任意添加内容

    一个人在这个城市里

    为了填饱肚子就已筋疲力尽

  3. 在HDFS中创建 /studir/stuinfo/ 目录

    hadoop fs -mkdir -p /studir/stuinfo/

  4. 将本地students.txt文件上传到HDFS中

    hadoop fs -put students.txt /studif/stuinfo/

  5. 查看HDFS中 /studir/stuinfo/students.txt 的内容

    hadoop fs -text /studir/stuinfo/students.txt

  6. 将HDFS中 /studir/stuinfo/students.txt 下载到本地命名为 new_students.txt

    hadoop fs -get /studir/stuinfo/students.txt ~/new_students.txt

  7. 删除HDFS中的 /studir 目录

    hadoop fs -rm -r /studir

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值