Hadoop简介

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

1.1 Hadoop架构


  • Hadoop由三个模块组成:分布式存储HDFS、分布式计算MapReduce、资源调度引擎Yarn
  • Hadoop版本内核演变图片 hadoop1.0中,hadoop内核的主要组成是_hadoop

1.2 Hadoop历史

Hadoop版本内核演变图片 hadoop1.0中,hadoop内核的主要组成是_xml_02

  • Hadoop作者Doug Cutting
  • Apache Lucene是一个文本搜索系统库
  • Apache Nutch作为前者的一部分,主要包括web爬虫、全文检索;2003年“谷歌分布式文件系统GFS”论文,2004年开源版本NDFS
  • 2004年“谷歌MapReduce”论文,2005年Nutch开源版MapReduce

 

说明:

1、VmWare版本:

VmWare10版本

2、linux版本

linux统一使用centos,centos统一使用centos7.6 64位版本

种子文件下载地址:http://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.torrent

3、先配置好一台虚拟机的环境及其hadoop配置,再克隆到其他机器

 

目录

一、安装

1.1、安装VMware

1.2、安装Centos7

二、配置Linux

1、重命名主机

2、配置网络:

3、SecureCRTP(或Xshell)链接linux并配置

4、关闭linux自带防火墙

5、建立ip映射

6、添加普通用户hadoop

7、定义统一目录

二、配置hadoop

1、上传hadoop、jak安装包,进行解压

2、配置hadoop环境变量

3、配置hadoop-env.sh

4、配置core-site.xml

5、配置hdfs-site.xml

6、配置mapred-site.xml

7、配置yarn-site.xml

8、编辑slaves

9、创建文件存放目录

三、克隆配置

1、克隆其他两台虚拟机node02、node03

2、克隆虚拟机配置

3、三台虚拟机免密登录

四、运行hadoop

1、格式化hadoop

2、启动集群

3、测试hadoop

4、停止集群


一、安装

1.1、安装VMware

直接使用安装包一直下一步安装即可,且安装包当中附带破解秘钥,进行破解即可使用

1.2、安装Centos7

稍后安装系统——编辑虚拟机设置——内存、处理器、CD/DVD

English——时间——磁盘分区(点进去默认)——Begin——ROOTPASSWORD

 

二、配置Linux

1、重命名主机

hostnamectl set-hostname node01 

logout 注销

重新登陆

2、配置网络:

 (1)

vi  /etc/sysconfig/network-scripts/ifcfg-ens33

修改 BOOTPROTO=static

修改 ONBOOT=yes

添加:

IPADDR=192.168.52.110

NETMASK=255.255.255.0

GATEWAY=192.168.52.2

DNS1=8.8.8.8

esc——shift+:——wq!  保存并退出vi

 

(2)配置VMware网络:编辑 - 虚拟网络编辑器 -

Hadoop版本内核演变图片 hadoop1.0中,hadoop内核的主要组成是_Hadoop版本内核演变图片_03

【NAT设置】按钮

Hadoop版本内核演变图片 hadoop1.0中,hadoop内核的主要组成是_Hadoop版本内核演变图片_04

 

(3)重启网络服务

service network restart 重启网络服务

ping baidu.com 测试

 

3、SecureCRTP(或Xshell)链接linux并配置

在SecureCRTP(或Xshell)上进行后续配置,可以复制粘贴,Linux原生shell不能粘贴

Hadoop版本内核演变图片 hadoop1.0中,hadoop内核的主要组成是_Hadoop版本内核演变图片_05

 

 

4、关闭linux自带防火墙

(1)systemctl stop firewalld

(2)systemctl disable firewalld

(3)关闭selinux

先安装vim: yum -y install vim

vim /etc/selinux/config

修改:SELINUX = disabled

5、建立ip映射

Vim /etc/hosts

192.168.52.100 node01

192.168.52.110 node02

192.168.52.120 node03

6、添加普通用户hadoop

添加普通用户hadoop,并给以sudo权限,用于以后所有的大数据软件的安装

useradd hadoop
 passwd hadoop

visudo

添加一句:hadoop  ALL=(ALL)       ALL

7、定义统一目录

定义三台linux服务器软件压缩包存放目录,以及解压后安装目录,三台机器执行以下命令,创建两个文件夹,一个用于存放软件压缩包目录,一个用于存放解压后目录

root用户下

 mkdir -p /kkb/soft     # 软件压缩包存放目录
 mkdir -p /kkb/install  # 软件解压后存放目录
 chown -R hadoop:hadoop /kkb    # 将文件夹权限更改为hadoop用户

 

 

二、配置hadoop

1、上传hadoop、jak安装包,进行解压

Hadoop版本内核演变图片 hadoop1.0中,hadoop内核的主要组成是_h5_06

#解压安装包到/kkb/install目录下
[root@node01 ~]# tar -xzvf hadoop-2.6.0-cdh5.14.2.tar.gz -C /kkb/install

[root@node01 ~]# tar -xzvf jdk-8u141-linux-x64.tar.gz -C /kkb/install

 

2、配置hadoop环境变量

1.配置环境变量

#1.在linux系统全局配置文件的末尾进行hadoop和java的环境变量配置
[root@node1 ~]# vi /etc/profile
[root@node01 ~]# vi /etc/profile

# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}
"/etc/profile" 85L, 2028C

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

unset i
unset -f pathmunge

JAVA_HOME=/kkb/install/jdk1.8.0_141
HADOOP_HOME=/kkb/install/hadoop-2.6.0-cdh5.14.2

PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

export JAVA_HOME
export HADOOP_HOME
export PATH

2.验证环境变量

#1.使环境变量生效
[root@node1 ~]# source /etc/profile

#2.显示hadoop的版本信息
[root@node1 ~]# hadoop version

#3.显示出hadoop版本信息表示安装和环境变量成功.
Hadoop 3.1.2
Source code repository https://github.com/apache/hadoop.git -r 1019dde65bcf12e05ef48ac71e84550d589e5d9a
Compiled by sunilg on 2019-01-29T01:39Z
Compiled with protoc 2.5.0
From source with checksum 64b8bdd4ca6e77cce75a93eb09ab2a9
This command was run using /opt/bigdata/hadoop-3.1.2/share/hadoop/common/hadoop-common-3.1.2.jar
 

3、配置hadoop-env.sh

这个文件只需要配置JAVA_HOME的值即可,在文件中找到export JAVA_HOME字眼的位置,删除最前面的#

[root@node1 ~]#cd /kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop
[root@node1 hadoop]# pwd
/opt/bigdata/hadoop-3.1.2/etc/hadoop
[root@node1 hadoop]# vi hadoop-env.sh 

export JAVA_HOME=/kkb/install/jdk1.8.0_141

4、配置core-site.xml

切换到/kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop目录下

[root@node1 ~]# cd /kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop

[root@node1 hadoop]# vi core-site.xml

<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://node01:8020</value>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/tempDatas</value>
	</property>
	<!--  缓冲区大小,实际工作中根据服务器性能动态调整 -->
	<property>
		<name>io.file.buffer.size</name>
		<value>4096</value>
	</property>
<property>
     <name>fs.trash.interval</name>
     <value>10080</value>
     <description>检查点被删除后的分钟数。 如果为零,垃圾桶功能将被禁用。 
     该选项可以在服务器和客户端上配置。 如果垃圾箱被禁用服务器端,则检查客户端配置。 
     如果在服务器端启用垃圾箱,则会使用服务器上配置的值,并忽略客户端配置值。</description>
</property>

<property>
     <name>fs.trash.checkpoint.interval</name>
     <value>0</value>
     <description>垃圾检查点之间的分钟数。 应该小于或等于fs.trash.interval。 
     如果为零,则将该值设置为fs.trash.interval的值。 每次检查指针运行时,
     它都会从当前创建一个新的检查点,并删除比fs.trash.interval更早创建的检查点。</description>
</property>
</configuration>

5、配置hdfs-site.xml

配置/kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop目录下的hdfs-site.xml

<configuration>
	<!-- NameNode存储元数据信息的路径,实际工作中,一般先确定磁盘的挂载目录,然后多个目录用,进行分割   --> 
	<!--   集群动态上下线 
	<property>
		<name>dfs.hosts</name>
		<value>/kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/accept_host</value>
	</property>
	
	<property>
		<name>dfs.hosts.exclude</name>
		<value>/kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/deny_host</value>
	</property>
	 -->
	 
	 <property>
			<name>dfs.namenode.secondary.http-address</name>
			<value>node01:50090</value>
	</property>

	<property>
		<name>dfs.namenode.http-address</name>
		<value>node01:50070</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:///kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/namenodeDatas</value>
	</property>
	<!--  定义dataNode数据存储的节点位置,实际工作中,一般先确定磁盘的挂载目录,然后多个目录用,进行分割  -->
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:///kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/datanodeDatas</value>
	</property>
	
	<property>
		<name>dfs.namenode.edits.dir</name>
		<value>file:///kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/edits</value>
	</property>
	<property>
		<name>dfs.namenode.checkpoint.dir</name>
		<value>file:///kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/snn/name</value>
	</property>
	<property>
		<name>dfs.namenode.checkpoint.edits.dir</name>
		<value>file:///kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/snn/edits</value>
	</property>
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>
	<property>
		<name>dfs.permissions</name>
		<value>false</value>
	</property>
	<property>
		<name>dfs.blocksize</name>
		<value>134217728</value>
	</property>
</configuration>

6、配置mapred-site.xml

#默认没有mapred-site.xml文件,这里需要从模板中复制一份出来进行修改配置
 [root@node01 hadoop]# cp  mapred-site.xml.template mapred-site.xml

配置/kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop目录下的mapred-site.xml

<!--指定运行mapreduce的环境是yarn -->
<configuration>
   <property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>

	<property>
		<name>mapreduce.job.ubertask.enable</name>
		<value>true</value>
	</property>
	
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>node01:10020</value>
	</property>

	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>node01:19888</value>
	</property>
</configuration>

7、配置yarn-site.xml

配置/kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop目录下的yarn-site.xml

<configuration>
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>node01</value>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>

	
	<property>
		<name>yarn.log-aggregation-enable</name>
		<value>true</value>
	</property>


	<property>
		 <name>yarn.log.server.url</name>
		 <value>http://node01:19888/jobhistory/logs</value>
	</property>

	<!--多长时间聚合删除一次日志 此处-->
	<property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>2592000</value><!--30 day-->
	</property>
	<!--时间在几秒钟内保留用户日志。只适用于如果日志聚合是禁用的-->
	<property>
        <name>yarn.nodemanager.log.retain-seconds</name>
        <value>604800</value><!--7 day-->
	</property>
	<!--指定文件压缩类型用于压缩汇总日志-->
	<property>
        <name>yarn.nodemanager.log-aggregation.compression-type</name>
        <value>gz</value>
	</property>
	<!-- nodemanager本地文件存储目录-->
	<property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>/kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/yarn/local</value>
	</property>
	<!-- resourceManager  保存最大的任务完成个数 -->
	<property>
        <name>yarn.resourcemanager.max-completed-applications</name>
        <value>1000</value>
	</property>

</configuration>

8、编辑slaves

此文件用于配置集群有多少个数据节点,我们把node2,node3作为数据节点,node1作为集群管理节点.

配置/kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop目录下的slaves

[root@node1 hadoop]# vi slaves 
 #将localhost这一行删除掉
 node01
 node02
 node03


~  

 

9、创建文件存放目录

node01机器上面创建以下目录

[root@node01 ~]# mkdir -p /kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/tempDatas
 mkdir -p /kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/namenodeDatas
 [root@node01 ~]# mkdir -p /kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/namenodeDatas
 [root@node01 ~]# mkdir -p /kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/datanodeDatas
 [root@node01 ~]# mkdir -p /kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/edits
 [root@node01 ~]# mkdir -p /kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/snn/name
 [root@node01 ~]# mkdir -p /kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/snn/edits
  #1.修改目录所属用户和组为hadoop:hadoop
 [root@node01 ~]# chown -R hadoop:hadoop /kkb
  #2.修改目录所属用户和组的权限值为755
 [root@node01 ~]# chmod -R 755  /kkb#3.关机
[root@node01 ~]# init 0

 

三、克隆配置

1、克隆其他两台虚拟机node02、node03

node01——右键——下一步...——创建链接克隆——名称(node02)、位置——完成

——

Hadoop版本内核演变图片 hadoop1.0中,hadoop内核的主要组成是_h5_07

2、克隆虚拟机配置

1、修改主机名 :hostnamectl set-hostname node02 

2、配置Linux网络(IP修改为110、120):vi  /etc/sysconfig/network-scripts/ifcfg-ens33

3、链接Xshell

 

3、三台虚拟机免密登录

1、三台虚拟机,切换到Hadoop用户

[root@node01 ~]# su - hadoop     #<--(三台都执行)

2、三台虚拟机,生成公钥

[hadoop@node1 ~]# ssh-keygen -t rsa  #<--回车,(三台都执行)

3、三台虚拟机,拷贝公钥到node01服务器上

[hadoop@node1 ~]#  ssh-copy-id node01 #<--回车\、yes、密码hadoop,(三台都执行)

4、node01的hadoop用户下,将authorized_keys拷贝到node02、node93服务器上

[hadoop@node1 ~]# cd /home/hadoop/.ssh/
 [hadoop@node1 ~]# scp authorized_keys  node02:$PWD
 [hadoop@node1 ~]# scp authorized_keys  node03:$PWD

5、测试

[hadoop@node1 ~]#  ssh node02
[hadoop@node2 ~]# 
[hadoop@node2 ~]#  logout
[hadoop@node1 ~]#
[hadoop@node1 ~]# hostname
node01

 

四、运行hadoop

1、格式化hadoop

切换hadoop,注意,只能在node01上,只有格式化一次,否则会数据丢失

[root@node01 ~]$ su - hadoop
 [hadoop@node01 hadoop]$  hdfs namenode -format

2、启动集群

[hadoop@node01 ~]$ start-all.sh 

在浏览器地址栏中输入http://192.168.52.100:50070/dfshealth.html#tab-overview查看namenode的web界面.

Hadoop版本内核演变图片 hadoop1.0中,hadoop内核的主要组成是_Hadoop版本内核演变图片_08

3、测试hadoop

1、使用hdfs dfs -ls /  命令浏览hdfs文件系统,集群刚开始搭建好,由于没有任何目录所以什么都不显示.

[hadoop@node01 ~]$ hdfs dfs -ls /

2、创建测试目录

[hadoop@node01 ~]$ hdfs dfs -mkdir /test

3、在此使用hdfs dfs -ls 发现我们刚才创建的test目录

[hadoop@node01 ~]$ hdfs dfs -ls /test
 19/08/23 05:22:25 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
 Found 2 items
 drwxr-xr-x   - hadoop supergroup          0 2019-08-23 05:21 /test/
 [hadoop@node01 ~]$

4、使用touch命令在linux本地目录创建一个words文件

[hadoop@node01 ~]$ touch words

5、文件中输入如下内容

[hadoop@node01 ~]$ vi words
 i love you
 are you ok

6、将创建的本地words文件上传到hdfs的test目录下

[hadoop@node01 ~]$ hdfs dfs -put words /test

7、查看上传的文件是否成功

[hadoop@node01 ~]$ hdfs dfs -ls -r /test
 Found 1 items
 -rw-r--r--   3 hadoop supergroup         23 2019-06-30 17:28 /test/words

8、MR词频统计
#/test/words 是hdfs上的文件存储路径 ,/test/output是mapreduce程序的输出路径,这个输出路径是不能已经存在的路径,mapreduce程序运行的过程中会自动创建输出路径,数据路径存在的话会报错

[hadoop@node01 ~]$ hadoop jar /kkb/install/hadoop-2.6.0-cdh5.14.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar wordcount /test/words /test/output

wordcount程序能够正常的运行成功,输入结果,意味着我们的大数据环境正确的安装和配置成功。

 

4.停止集群

[hadoop@node1 ~]$ stop-all.sh