Hadoop

Posted Welcome MyBlog~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop相关的知识,希望对你有一定的参考价值。

一、大数据相关概念

Bigdata:

  • 结构化数据
  • 半结构化数据
  • 非结构化数据

搜索引擎:搜索组件、索引组件,由蜘蛛程序搜集而来

存储平台

分析处理平台

Google:

  • 2003年:The Google File System
  • 2004年:MapReduce:Simplified Data Proccessing On Large Cluster
  • 2006年:BigTable:A Distributed Storage System for Structure Date

Hadoop:HDFS + MapReduce

HBase

  • HDFS
    • NameNode 名称节点
    • DataNode 数据节点
    • SNN:Secondary NameNode 辅助名称节点
  • MapReduce
    • JobTracker
    • TaskTracker

二、函数式编程

  • Lisp,ML函数式编程语言:高阶函数
    • map:把一个任务映射为多个;接受一个函数为参数,并将其应用于列表中的所有元素
    • fold:接受俩个参数,函数、初始值,不断将前一个结果和后一个函数做处理,来实现数据结果折叠
  • mapper:同一个键只能发往同一个reducer
  • reducer:将mapper处理的结果reducer

三、hadoop组件

  • MRv1(Hadoop2) -- MapReduce
    • Pig
    • Hive
  • MRv2(Hadoop2)
    • YARN
      • Tez:execution engine
        • MR:bateh
        • Pig:data flow
        • Hive:sql
      • RM:Resource Manager
      • NM:Node Manager
      • AM:Application Master
      • container:mr任务

四、Hadoop部署

  1. 单机模型:测试使用
  2. 伪分布式模型:运行于单机
  3. 分布式模型:集群模型

hadoop-2.6.2:jdk-1.6以上

hadoop-2.7

一、伪分布式模型部署示例:

CentOS:7.5

JDK:1.7.0_171

hadoop:2.6.5

  • 配置基础环境
# yum install java-1.7.0-openjdk.x86_64 -y
# yum install java-1.7.0-openjdk-devel.x86_64 -y
# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr
# wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz
# mkdir /bdapps
# tar xf hadoop-2.6.5.tar.gz -C /bdapps/
# cd /bdapps/
# ln -sv hadoop-2.6.5 hadoop
# vim /etc/profile.d/hadoop.sh
export HADOOP_PREFIX=/bdapps/hadoop
export PATH=$PATH:${HADOOP_PREFIX}/bin:${HADOOP_PREFIX}/sbin
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
export HADOOP_MAPPERD_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
# . /etc/profile.d/hadoop.sh
  • 创建运行Hadoop进程的用户和相关目录
~]# groupadd hadoop
~]# useradd -g hadoop yarn
~]# useradd -g hadoop hdfs
~]# useradd -g hadoop mapred
~]# mkdir -pv /data/hadoop/hdfs/{nn,snn,dn}
~]# chown -R hdfs:hadoop /data/hadoop/hdfs
~]# cd /bdapps/hadoop/
hadoop]# mkdir logs
hadoop]# chmod g+w logs
hadoop]# chown -R yarn:hadoop ./*
  • 配置hadoop
hadoop]# vim etc/hadoop/core-site.xml  #core-site.xml文件包含了NameNode主机地址以及其监听RPC端口等信息,对于伪分布式模型的安装来说,其主机地址伪localhost。NameNode默认使用的RPC端口伪8020。其简要的配置内容如下:
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:8020</value>
        <final>true</final>
    </property>
</configuration>
hadoop]# vim etc/hadoop/hdfs-site.xml  #hdfs-site.xml主要用于配置HDFS相关属性,例如复制因子(即数据块的副本数)、NN和DN用于存储数据的目录等。数据块的副本数对于伪分布式的Hadoop应该为1,而NN和DN用于存储的数据目录为前面的步骤中专门为其创建的路径。另外,前面的步骤中也为SNN创建了相关的目录,这里也一并配置其为启用状态。
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///data/hadoop/hdfs/nn</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///data/hadoop/hdfs/dn</value>
    </property>
    <property>
        <name>fs.checkpoint.dir</name>
        <value>file:///data/hadoop/hdfs/snn</value>
    </property>
    <property>
        <name>fs.checkpoint.edits.dir</name>
        <value>file:///data/hadoop/hdfs/snn</value>
    </property>
</configuration>

注意:如果需要其他用户对hdfs有写入权限,还需要在此文件中添加一项属性定义。
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
hadoop]# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
hadoop]# vim etc/hadoop/mapred-site.xml  #mapred-site.xml文件用于配置集群的MapReduce framework,此处应该指定使用yarn,另外的可用值还有local和classic。mapred-site.xml默认不存在,但有模板文件mapred-site.xml.template,只需要将其复制mapred-site.xml即可。
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
hadoop]# vim etc/hadoop/yarn-site.xml  #yarn-site.xml用于配置YARN进程及YARN的相关属性。首先需要指定ResourceManager守护进程的主机和监听的端口,对于伪分布式模型来说,其主机伪localhost,默认的端口为8032;其次需要指定ResourceManager使用的scheduler,以及NodeManager的辅助服务。示例如下:
<configuration>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>localhost:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>localhost:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>localhost:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>localhost:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>localhost:8088</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    </property>
</configuration>
  • 格式化HDFS
~]# su - hdfs
~]$ hdfs namenode -format  #显示输出successfully formatted表示格式化成功
  • 启动
~]# su - hdfs
~]$ hadoop-daemon.sh start namenode
~]$ hadoop-daemon.sh start secondarynamenode
~]$ hadoop-daemon.sh start datanode
~]$ jps  #查看java进程,看NameNode是否启动
~]# su - yarn
~]$ yarn-daemon.sh start resourcemanager
~]$ yarn-daemon.sh start nodemanager
~]$ jps

RMUI

HDFS: http://192.168.0.12:50070

YARN: http://localhost:8088/cluster

  • 测试
~]# su - hdfs
~]$ yarn jar /bdapps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /test/fstab /test/fatab.out  #统计文件中每个单词出现的次数
~]$ hdfs dfs -ls /test/fatab.out/
~]$ hdfs dfs -cat /test/fatab.out/part-r-00000  #统计结果

五、hdfs命令

~]$ hdfs dfs -mkdir /test
~]$ hdfs dfs -ls /
~]$ hdfs dfs -put /etc/fstab /user/hdfs/fstab
~]$ hdfs dfs -put /etc/fstab /test/fstab
~]$ hdfs dfs -ls -R /
~]$ hdfs dfs -cat /test/fstab
~]$ hdfs dfs -df -h

以上是关于Hadoop的主要内容,如果未能解决你的问题,请参考以下文章

hadoop的mapreduce常见算法案例有几种

07_Warning $HADOOP_HOME is deprecated.去除办法

SBT找不到hadoop-aws 3.1.1

Hadoop每日一讨论整理版

16-hadoop-mapreduce简介

hadoop2.5.2学习13-MR之新浪微博-DF的实现