学习收藏

Hadoop基础

2019-04-01  本文已影响0人  任总

一、大数据

1、大数据的结构

结构化数据:
半结构化数据:
非结构化数据:

2、大数据的获取

第一步:爬行
第二步:抓取存储
第三步:分析处理

3、发展历史

二、Hadoop

1、Hadoop定义

2、函数式编程:

map:
fold:

fold(g(), init)接受两个参数:第一个是函数,第二个是初始值,作用是把多个任务折叠


根据map的结果列表,把列表中数据处理折叠成一个唯一最终结果

3、mapreduce:

mapreduce逻辑结构
partitioner分区器
combiner合并器

4、Hadoop:存储和处理平台

hdfs:集群,NN名称节点,SNN辅助名称节点,DN数据节点
mapreduce:集群是一个有中心节点工作方式的集群,JobTracker集群资源和作业管理,TaskTracker运行作业任务
任务分别为:map和reduce

5、编程模型与数据处理引擎MRv1和MRv2

Hadoop与Hadoop2.0区别
一个任务就会分成两个框架
* 框架一
* 框架二

6、hadoop的三个著名的插件:hive,pig,Hbase

7、Hadoop Distribution分发版:有两个著名的商业分发版

1、Cloudera: CDH
2、Hortonworks: HDP
另外还有Intel:IDH、MapR

三、基于伪分布式模型运行的hadoop部署

Hadoop,基于Java语言研发;
jdk:1.6, 1.7, 1.8
hadoop-2.6.2版本需要jdk 1.6+
hadoop-2.7版本需要 jdk 1.7+

注意:因为实验主机使用java要求内存至少2G

1、安装jdk

[root@node-61 ~]# yum install epel-release -y

#安装jdk
[root@node-61 ~]# yum install java-1.8.0-openjdk-devel -y

#设置环境变量
[root@node-61 ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

[root@node-61 ~]# . /etc/profile.d/java.sh

#验证版本
[root@node-61 ~]# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

2、下载Hadoop-2.7.7

下载地址:https://hadoop.apache.org/releases.html

[root@node-61 ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
[root@node-61 ~]# mkdir /bdapps
[root@node-61 ~]# tar xf hadoop-2.7.7.tar.gz -C /bdapps/
[root@node-61 ~]# ln -sv /bdapps/hadoop-2.7.7/ /bdapps/hadoop
[root@node-61 ~]# 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_PRFIX}
export HADOOP_MAPPERD_HOME=${HADOOP_PRFIX}
export HADOOP_COMMON_HOME=${HADOOP_PRFIX}
export HADOOP_HDFS_HOME=${HADOOP_PRFIX}

3、创建一个组和用户,工作目录

[root@node-61 ~]# groupadd hadoop
[root@node-61 ~]# useradd -g hadoop yarn
[root@node-61 ~]# useradd -g hadoop hdfs
[root@node-61 ~]# useradd -g hadoop mapred

4、创建数据目录和日志目录

[root@node-61 ~]# mkdir -pv /data/hadoop/hdfs/{nn,snn,dn}
[root@node-61 ~]# chown -R hdfs:hadoop /data/hadoop/hdfs #修改属主属组
[root@node-61 ~]# ll /data/hadoop/hdfs/
total 0
drwxr-xr-x 2 hdfs hadoop 6 Mar 11 23:33 dn
drwxr-xr-x 2 hdfs hadoop 6 Mar 11 23:33 nn
drwxr-xr-x 2 hdfs hadoop 6 Mar 11 23:33 snn

[root@node-61 ~]# mkdir /bdapps/hadoop/logs
[root@node-61 ~]# chmod g+w /bdapps/hadoop/logs
[root@node-61 ~]# chown -R yarn:hadoop /bdapps/hadoop/*

5、配置Hadoop

core-site.xml 配置文件

#core-site.xml 
[root@node-61 ~]# vim /bdapps/hadoop/etc/hadoop/core-site.xml 

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
.............
<configuration>
      <property>
                <name>fs.defaultFS</name>                #函数名称
                <value>hdfs://localhost:8020</value>    #函数对应的值,定义端口
                <final>true</final>
      </property>
</configuration>

hdfs-site.xml配置文件

#hdfs-site.xml
[root@node-61 ~]#  vim /bdapps/hadoop/etc/hadoop/hdfs-site.xml
        <configuration>
            <property>
                <name>dfs.replication</name>  #数据块的副本数
                <value>1</value>    #定义数值为1
            </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>

mapred-site.xml配置文件

[root@node-61 ~]# mv  /bdapps/hadoop/etc/hadoop/mapred-site.xml.template /bdapps/hadoop/etc/hadoop/mapred-site.xml
[root@node-61 ~]# vim /bdapps/hadoop/etc/hadoop/mapred-site.xml

        <configuration>
            <property>
                <name>mapreduce.framework.name</name> #集定义群
                <value>yarn</value> #集群值为yarn
            </property>
        </configuration>

yarn-site.xml配置文件

[root@node-61 ~]# vim /bdapps/hadoop/etc/hadoop/yarn-site.xml 
        <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> #web管理地址
                <value>localhost:8088</value> #值为地址端口
            </property>
            <property>
                <name>yarn.nodemanager.aux-services</name> #节点管理的辅助服务
                <value>mapreduce_shuffle</value> #值为shuffle类
            </property>
            <property>
                <name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name>#使用哪一种shuffle类
                <value>org.apache.hadoop.mapred.ShuffleHandler</value>#值为使用apache中的ShuffleHandler类
            </property>
            <property>
                <name>yarn.resourcemanager.scheduler.class</name> #定义使用哪个调度器类
                <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value> #值为使用apache中的CapacityScheduler类
            </property>
        </configuration>    

6、格式化HDFS

[root@node-61 ~]# su - hdfs
[hdfs@node-61 ~]$ hdfs namenode -format

#验证格式化是否成功
[hdfs@node-61 ~]$ ls /data/hadoop/hdfs/nn/current/
fsimage_0000000000000000000  fsimage_0000000000000000000.md5  seen_txid  VERSION

7、启动Hadoop的hdfs集群

#启动名称节点namenode
[hdfs@node-61 ~]$ hadoop-daemon.sh start namenode
starting namenode, logging to /bdapps/hadoop/logs/hadoop-hdfs-namenode-node-61.out
[hdfs@node-61 ~]$ jps
7619 Jps
7550 NameNode

#启动辅助名称节点secondarynamenode
[hdfs@node-61 ~]$ hadoop-daemon.sh start secondarynamenode
starting secondarynamenode, logging to /bdapps/hadoop/logs/hadoop-hdfs-secondarynamenode-node-61.out
[hdfs@node-61 ~]$ jps
7685 Jps
7644 SecondaryNameNode
7550 NameNode

#启动数据节点datanode
[hdfs@node-61 ~]$ hadoop-daemon.sh start datanode
starting datanode, logging to /bdapps/hadoop/logs/hadoop-hdfs-datanode-node-61.out
[hdfs@node-61 ~]$ jps
7713 DataNode
7644 SecondaryNameNode
7789 Jps
7550 NameNode

8、启动Hadoop的yarn集群

#使用yarn用户启动
[root@node-61 ~]# su - yarn
[yarn@node-61 ~]$ yarn-daemon.sh start resourcemanager  #启动rm
starting resourcemanager, logging to /bdapps/hadoop/logs/yarn-yarn-resourcemanager-node-61.out
[yarn@node-61 ~]$ yarn-daemon.sh start nodemanager  #启动nm
starting nodemanager, logging to /bdapps/hadoop/logs/yarn-yarn-nodemanager-node-61.out
[yarn@node-61 ~]$ jps
18848 Jps
18508 ResourceManager
18748 NodeManager

四、hadoop测试使用

1、hdfs的User Commands用户命令

mkdir命令创建目录

[hdfs@node-61 ~]$ hdfs dfs -mkdir /test
[hdfs@node-61 ~]$ hdfs dfs -ls /
Found 1 items
drwxr-xr-x   - hdfs supergroup          0 2019-03-13 21:52 /test

put命令上传到hdfs指定目录

[hdfs@node-61 ~]$ hdfs dfs -put  /etc/fstab /test/fstab
[hdfs@node-61 ~]$ hdfs dfs -ls /test
Found 1 items
-rw-r--r--   1 hdfs supergroup        465 2019-03-13 21:56 /test/fstab

ls -R命令递归查询指定目录

[hdfs@node-61 ~]$ hdfs dfs -ls -R /
drwxr-xr-x   - hdfs supergroup          0 2019-03-13 21:56 /test
-rw-r--r--   1 hdfs supergroup        465 2019-03-13 21:56 /test/fstab

cat命令显示文件内容

[hdfs@node-61 ~]$ hdfs dfs -cat /test/fstab

#
# /etc/fstab
# Created by anaconda on Tue Sep 25 19:41:12 2018
...........

2、Administration Commands管理命令

    balancer
    datanode
    dfsadmin
    mover
    namenode
    secondarynamenode

3、在hadoop运行测试程序

[root@node-61 ~]# su - hdfs
Last login: Wed Mar 13 21:52:24 CST 2019 on pts/0
[hdfs@node-61 ~]$ yarn jar /bdapps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar  wordcount  /test/fstab  /test/fstab.out  
#使用示例程序中的wordcount单词统计方法,统计fastab文件夹并把结果保存到fatab.out下

#查询输出文档统计结果
[hdfs@node-61 ~]$ hdfs dfs -cat /test/fstab.out/part-r-00000
#   7
'/dev/disk' 1
/   1
/boot   1
/dev/mapper/centos-root 1
/dev/mapper/centos-swap 1
/etc/fstab  1
0   6
19:41:12    1
2018    1
25  1
Accessible  1
Created 1
See 1
Sep 1
Tue 1
UUID=2644b409-66f3-48dd-922f-acb280404e1d   1
anaconda    1
and/or  1
are 1
blkid(8)    1
by  2
defaults    3
filesystems,    1
findfs(8),  1
for 1
fstab(5),   1
info    1
maintained  1
man 1
more    1
mount(8)    1
on  1
pages   1
reference,  1
swap    2
under   1
xfs 2

4、web界面

参考链接:https://blog.csdn.net/wzz87/article/details/79372162
https://blog.csdn.net/jiewuyou/article/details/37742669

上一篇 下一篇

猜你喜欢

热点阅读