Hadoop基本概念与安装配置

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_40918961/article/details/96012694

整个Apache Hadoop“平台”包括Hadoop内核、MapReduce、Hadoop分布式文件系统(HDFS)以及一些相关项目。

Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

Hadoop相关项目

  • Hadoop Common:在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common
  • HDFS:Hadoop分布式文件系统(Distributed File System)-HDFS(Hadoop Distributed File System)
  • MapReduce:并行计算框架,0.20前使用org.apache.hadoop.mapred旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API
  • Apache HBase:分布式NoSQL列数据库,类似谷歌公司BigTable。
  • Apache Hive:构建于hadoop之上的数据仓库,通过一种类SQL语言HiveQL为用户提供数据的归纳、查询和分析等功能。Hive最初由Facebook贡献。
  • Apache Mahout:机器学习算法软件包。
  • Apache Sqoop:结构化数据(如关系数据库)与Apache Hadoop之间的数据转换工具。
  • Apache ZooKeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。
  • Apache Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。
  • Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

创建用户及用户组

 创建用户hadoop

$ sudo adduser hadoop

将hadoop用户添加进sudo用户组

$ sudo usermod -G sudo hadoop

不同用户有不同的文件备份,因此不同的用户必须都初始配置hadoop才能使用hadoop,否则找不到hadoop命令 ,在配置hadoop之前必须配置java,主要是JAVA_HOME。

Hadoop安装与配置

先决条件:java与ssh必须被安装

linux下安装与配置java:https://www.cnblogs.com/lamp01/p/8932740.html(安装完之后注意要重启机器)

安装ssh:sudo apt-get install ssh  (ssh为一为远程登录与其他网络通信服务提供安全性的一种协议)

SSH登录本机
    ssh localhost
配置无密码登录,即利用 ssh-keygen 生成密钥,并将密钥加入到授权中

  1. cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
  2. ssh-keygen -t rsa              # 会有提示,都按回车就可以
  3. cat ./id_rsa.pub >> ./authorized_keys

安装rsync:sudo apt-get install rsync(rsync提供远程同步服务,即一数据镜像备份工具)

安装配置Hadoop:https://www.cnblogs.com/kinglau/p/3794433.html(hadoop version查看版本,仅参考)

大数据

大数据的核心问题围绕五个维度:多样性,复杂性,数据存储,计算分析,数据价值挖掘

Hadoop现在已经形成了一整套生态系统,为大数据与云计算提供支持。

HDFS操作

这里借用实验楼的图片,一目了然

HDFS架构

å¾çæè¿°ä¿¡æ¯

NameNode就是master,管理 HDFS 的名称空间和数据块映射信息、配置副本策略和处理客户端请求;Secondary NameNode用于辅助 NameNode,分担 NameNode 工作,定期合并 fsimage 和 fsedits 并推送给 NameNode,紧急情况下可辅助恢复 NameNode;DataNode就是slave,实际存储数据、执行数据块的读写并汇报存储信息给 NameNode。总的来说,NameNode就是中央管理中枢,Secondary NameNode用于辅助NameNode,DataNode用于存放实际数据,遵循master的管控。

HDFS读操作

å¾çæè¿°ä¿¡æ¯

HDFS写操作

å¾çæè¿°ä¿¡æ¯

需求诞生功能。HDFS所完成的功能就是存储并读写大量数据,使用集群的方式进行管理(可以想到传统方式,一台超算,大量冗余磁盘阵列,由单台计算机控制),给你一台貌似能存储并读写大量数据的机器,实际上背后是一整个计算机集群进行分布式存储计算,使用hadoop进行管理完成client与master的交互即可。

Hadoop启动模式

Hadoop集群有三种启动模式:

  • 单机模式:默认情况下运行为一个单独机器上的独立Java进程,主要用于调试环境
  • 伪分布模式:在单个机器上模拟成分布式多节点环境,每一个Hadoop守护进程都作为一个独立的Java进程运行
  • 完全分布式模式:真实的生产环境,搭建在完全分布式的集群环境

这里不得不吐槽一下,安装和教学还是官方文档来的好,一定要看官方文档,比杂七杂八的博客来的好得多

官网地址:http://hadoop.apache.org/

单机模式

安装完hadoop之后(以下都以/hadoop代指绝对路径),只要在/etc/hadoop/hadoop-env.sh下配置完JAVA_HOME(export JAVA_HOME=你的java jdk包的绝对路径),输入 hadoop version 成功则代表配置单机模式成功。

默认情况下,hadoop就是单机模式,只有一个节点,只执行一个java process

测试(以下的例子来自官网):

  $ mkdir input
  $ cp etc/hadoop/*.xml input
  $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar grep input output 'dfs[a-z.]+'
  $ cat output/*

执行成功就代表单机模式没问题

伪分布模式

不同版本的hadoop的环境配置不太一样,官网的配置教程是最低程度的配置,为完整运行,请参考以下方式

hadoop3.2.0伪分布式环境配置,主要是配置文件的配置,配置构建环境所必需的参数即可。

在/etc/hadoop/core-site.xml下进行配置:

  1. <configuration>
  2. <property>
  3. <name>hadoop.tmp.dir</name>
  4. <value>file:/usr/local/hadoop/tmp</value>
  5. <description>Abase for other temporary directories.</description>
  6. </property>
  7. <property>
  8. <name>fs.defaultFS</name>
  9. <value>hdfs://localhost:9000</value>
  10. </property>
  11. </configuration>

其中fs.defaultFS的value(以下省略value这一说法,实际上hadoop读取配置文件,读取的是内置的参数的值,在这里配置的属性就是这个意思,配置的是hadoop内置的值,我们需要告诉hadoop)表示NameNode的IP地址和端口号。

hadoop.tmp.dir表示该环境下配置的NameNode和DataNode的数据目录,因此需要先在对应的目录下建立对应的目录,以免找不到。

 在/etc/hadoop/hdfs-site.xml下进行配置:

  1. <configuration>
  2. <property>
  3. <name>dfs.replication</name>
  4. <value>1</value>
  5. </property>
  6. <property>
  7. <name>dfs.namenode.name.dir</name>
  8. <value>file:/usr/local/hadoop/tmp/dfs/name</value>
  9. </property>
  10. <property>
  11. <name>dfs.datanode.data.dir</name>
  12. <value>file:/usr/local/hadoop/tmp/dfs/data</value>
  13. </property>
  14. </configuration>

其中dfs.replication指定HDFS中每个Block(数据读写以Block块为单位)被复制的次数,用于数据冗余备份。

dfs.namenode.name.dir表示存放NameNode元数据的目录

dfs.datanode.data.dir表示存放DataNode元数据的目录

执行NameNod格式化

执行 ./bin/hdfs namenode -format 进行NameNode的格式化

启动与关闭

在hadoop/下执行 ./sbin/start-dfs.sh  及自动执行脚本启动hadoop的hdfs功能

执行 ./sbin/stop-dfs.sh  即关闭

还有一个开启/关闭所有功能的脚本 ./sbin/start-all.sh   ./sbin/stop-all.sh

从上述例子中可以看到,执行对应的hadoop功能只需要配置相应的配置文件(./etc/hadoop),然后在执行相应脚本(./sbin/)即可,hadoop从配置文件中读取相应参数并完成相应功能。

查看状态

执行jps查看状态

出现了NameNode,Secondary NameNode,DataNode,jps 即代表配置成功

正常情况下,NameNode,Secondary NameNode,JobTracker是Master节点,运行于一台机器

DataNode,TaskTracker是Slaver节点,运行于另一台机器

完全分布式模式

平常的的学习中没有那么多计算机让你构成集群,这里暂时先放过

猜你喜欢

转载自blog.csdn.net/qq_40918961/article/details/96012694