目录

1.概述

2.环境准备

3.hadoop安装

3.1.下载安装配置

3.2.伪分布式集群

3.3.注意事项

4.Hadoop集群的组成


1.概述

hadoop有三种安装模式

  • 单机模式,只在一台机器上运行,存储用的本地文件系统而不是HDFS。
  • 伪分布式模式,存储采用HDFS,名称节点和数据节点在同一台机器上。
  • 分布式模式,标准的分布式集群。

做实验或者学习阶段选择伪分布式就好,本文将详细讲解在Linux搭建起一个伪分布式的hadoop集群。

2.环境准备

1.安装JDK

略,这一步应该就不用多赘述了吧,作者用的Oracle版的JDK8

2.配置ssh免密登录

由于名称节点要通过ssh来拉起数据节点的守护进程(用来上报信息),所以要先配置一下节点间的ssh免密登录,不然的话集群根本就起不来。

Ubuntu默认安装了ssh client,除此之外还要安装ssh server、生成密钥

apt-get install openssh-server

cd ~/.ssh

ssh-keygen -t rsa

hadoop 下载加速 hadoop如何下载_大数据

并将密钥追加到允许无密码登录的密钥列表文件中去:

cd /root/.ssh

cat id_rsa.pub >>authorized_keys

3.hadoop安装

3.1.下载安装配置

下载地址:

Index of /dist/hadoop/common

版本:

3.1.3

下载后直接解压即可。

用version参数看看解压是否正确:

hadoop 下载加速 hadoop如何下载_hadoop_02

测试一下单机模式是否能正常运行:

测试可以使用自带的demo来看运行是否正常,通过一个正则表达式去匹配指定格式的字符串,然后去查看output中存放的统计结果。

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

搭建伪分布式集群:

hadoop的配置文件所在路径:

<安装路径>/etc/hadoop

core-site.xml:

<configuration       <property>               <name>hadoop.tmp.version</name>               <value>file:/usr/local/hadoop/tmp</value>       </property>       <property>               <name>fs.defaultFS</name>               <value>hdfs://localhost:9000</value>       </property> </configuration>

hdfs-site.xml:

<configuration>       <property>               <name>dfs.replication</name>               <value>1</value>       </property>       <property>               <name>dfs.namenode.name.dir</name>               <value>file:/usr/local/hadoop/tmp/dfs/name</value>       </property>       <property>               <name>dfs.datanode.data.dir</name>               <value>file:/usr/local/hadoop/tmp/dfs/data</value>       </property> </configuration>

配置好配置文件后,下一步是什么?当然是格式化namenode了,这一步会根据配置文件去初始化好namenode节点:

./bin/hdfs namenode -format

格式化成功后的提示:

hadoop 下载加速 hadoop如何下载_hadoop_03

配置环境:

按道理说配置完配置文件后直接启动即可了对吧,但是在hadoop 3.1.3这个版本有个hadoop的环境配置文件etc/hadoop/hadoop-env.sh。这个配置里面要指定JAVA_HOME的路径已经可以启动Hadoop的用户,不然的话启动会报用户没有启动权限或者JAVA_HOME找不到。这是一个小坑以下是作者的配置:

JAVA_HOME=/jdk/jdk8/ export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root

启动:

./sbin/start-dfs.sh

启动完成后:

hadoop 下载加速 hadoop如何下载_hadoop 下载加速_04

3.2.伪分布式集群

HDFS做了资源隔离,要使用HDFS的前提是先在HDFS中为用户创建用户目录。

./bin/hdfs dfs -mkdir -p /user/root

在/user/root/下创建一个input目录:

./bin/hdfs dfs -mkdir input

把测试数据拷贝过去:

./bin/hdfs dfs -put ./etc/hadoop/*.xml input

这不是报错,不用管:

hadoop 下载加速 hadoop如何下载_hadoop_05

跑计算任务的demo:

跑demo的jar包的时候可以指定输入输出路径和一个正则表达式来指定匹配规则,下面的正则表达式会匹配dfs开头后面是a-z的字符的所有单词。

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'

查看结果:

hadoop 下载加速 hadoop如何下载_HDFS_06

3.3.注意事项

下次再进行测试的时候一定要将output文件夹删掉,不然冲突会报错。

4.Hadoop集群的组成

伪分布式的hadoop集群其实就两大核心组件构成:

  • HDFS
  • MapReduce

回顾一下上面启动hadoop后我们用JDK的JPS命令看到的JAVA进程:

hadoop 下载加速 hadoop如何下载_大数据_07

可以看到一共有三个东西:

  • secondNameNode
  • DataNode
  • NameNode

这三个东西是属于HDFS的,dataNode是具体存放数据的节点,nameNode用来记录所有dataNode的信息,secondNameNode是nameNode的备份:

hadoop 下载加速 hadoop如何下载_hadoop_08

以上是节点在HDFS维度扮演的角色,除此之外节点还在MapReduce维度扮演有角色,MapReduce在跑一个大的任务的时候会把节点分为两类:

  • jobTracker,负责总的来协调位于不同节点的小任务,将多个小任务的计算结果汇成最终的结果。
  • taskTracker,dataNode节点上跑的小任务。