在这里插入图片描述

一.hadoop是什么

Hadoop被公认是一套行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力。几乎所有主流厂商都围绕Hadoop开发工具、开源软件、商业化工具和技术服务。今年大型IT公司,如EMC、Microsoft、Intel、Teradata、Cisco都明显增加了Hadoop方面的投入。

二 .hadoop能干什么

hadoop擅长日志分析,facebook就用Hive来进行日志分析,2009年时facebook就有非编程人员的30%的人使用HiveQL进行数据分析;淘宝搜索中的自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,包括Twitter、LinkedIn 上用于发现您可能认识的人,可以实现类似Amazon.com的协同过滤的推荐效果。淘宝的商品推荐也是!在Yahoo!的40%的Hadoop作业是用pig运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。(2012年8月25新更新,天猫的推荐系统是hive,少量尝试mahout!)

三.hadoop生态系统及其核心模块构成

hadoop1.x版本核心模块
1、HDFS:Hadoop Distributed File System 分布式文件系统
2、MapReduce:分布式运算框架
hadoop2.x版本的核心某块
3、YARN:Yet Another Resource Negotiator 资源管理调度系统

四、了解知名企业的Hadoop应用案例,了解Hadoop的三种部署方式

1、单机版搭建
2、伪分布式搭建
3、完全分布式搭建

五.搭建Hadoop
1.准备好三台虚拟机,没有搭建的请看我的博文Hadoop集群搭建1
2.在Hadoop1上安装jdk1.8,因为之前用到的外网访问和操作Hadoop的HDFS的时候,jdk1.7好像不太好使,经过试验还是安装linux版1.8的jdk

链接:https://pan.baidu.com/s/1yc0NWwibeUfmg2VsUFGiRg
提取码:my7w
我的百度网盘大家可以下载一下

安装一个访问虚拟机的SSH工具,都可以像什么Xshell都可以只是我习惯了SSH
在这里插入图片描述

安装也很简单一直下一步就ok,我给大家上传到我的百度云里,大家可以自行下载,
链接:https://pan.baidu.com/s/1yc0NWwibeUfmg2VsUFGiRg
提取码:my7w

进入虚拟机里边输出命令ifconfig,看一下自己虚拟机的ip
在这里插入图片描述
进行SSH连接,对了那个SSH是放到window安装的啊,别搞到虚拟机里边安装
在这里插入图片描述
YES

在这里插入图片描述
输入密码
在这里插入图片描述
进入SSH连接页面

在这里插入图片描述

root权限操作
在这里插入图片描述
把下载好的JDK1.8放到虚拟机里边
在这里插入图片描述

编辑命令: cd /usr/ 进入usr目录创建一个文件夹 mkdir jdk 创建一个jdk的文件夹
cd /jdk 进入jdk文件夹 然后把拖拉来的jdk给放置到这个目录下
在这里插入图片描述
然后对jdk进行解压缩
tar -zxvf jdk-8u131-linux-x64.tar.gz
在这里插入图片描述然后进行配置jdk
vim /etc/profile

export JAVA_HOME=/usr/jdk/jdk1.8.0_131
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib

然后执行一下脚本

[root@hadoop1 jdk1.8.0_131]# source /etc/profile

检测一下是否安装成功,看一下jdk的版本信息 java -version
在这里插入图片描述

2.同步虚拟机时间

同步三台虚拟机的时间(时间同步)每台机器都要做同样的 操作
开启你的三台虚拟机
在这里插入图片描述
输入命令

yum  -y install ntp

在这里插入图片描述
执行命令

 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

在输入命令
ntpdate pool.ntp.org
在这里插入图片描述

注意:如果电脑可以上网,但是虚拟机不可以上网,可以如下操作
编辑

vim /etc/resolv.conf

添加如下两行指令

nameserver 202.106.0.20
nameserver 8.8.8.8

如果没法保证每台虚拟机都联网,只能用小手该时间
date命令将日期设置为当前时间

 ----   date -s 06/18/14

将时间设置为14点20分50秒

 ----   date -s 14:20:50

将时间设置为当前时间(MMDDhhmmYYYY.ss)

----date 0618141614.30
3.设置主机名

根据自己的ip来定义
192.168.94.128 设置这台机器的主机名为master
192.168.94.129 设置这台机器的主机名为slaver1
192.168.94.130 设置这台机器的主机名为slaver2

在192.168.94.128这台机器执行操作
新增用户

adduser master

修改密码:

passwd master 

提示输入密码和再次确定

修改主机名 vim /etc/sysconfig/network在这里插入图片描述

4、给master用户root权限
chmod +w /etc/sudoers
vim  /etc/sudoers

添加如下操作

master  ALL=(ALL)       ALL

在这里插入图片描述
重启虚拟机,选择master用户登录
注意:另外两台机器也做同上的操作(名字分别为slaver1和slaver2

5、修改主机映射(三台机器都是一样的操作)
vim  /etc/hosts

把hosts中的内容都删除,然后添加如下
根据自己的ip地址来填写

192.168.94.128 master
192.168.94.129 slaver1
192.168.94.130 slaver2

重启网卡

service network restart

剩下的两台机器,做同上操作(ip和mac地址是不一样)

6、配置三台机器之间的免密登录(必须在主机master上操作)

在这里插入图片描述
ssh-keygen -t rsa
然后四个回车
接着输入脚本

输入你的要的密码三台机器都要开机启动,在master主机器上执行
在这里插入图片描述

ssh-copy-id  master  
ssh-copy-id  slaver1 
ssh-copy-id  slaver2 

测试: ssh slaver1 就不需要输入密码 然后在exit到当前用户,可以执行下一次测试,如下图直接进入了slaver1机器上
在这里插入图片描述

7、下载hadoop压缩包,解压(以下的所有操作都在主机上 进行) 温馨提示:最好在官网下载,src的源码,然后在自己的机器上编译,这样就不会出现找不到jar包的异常

Hadoop官方

链接:https://pan.baidu.com/s/1jCwg2aMs0OzOHnd1qXp3Kw
提取码:1kxs

也可以用我的Hadoop包,我这个是2018年的tar之前一直没有更新,不过这个Hadoop版本还是挺稳定的

把hadoop解压到/usr/local/目录下

tar  -zxvf  hadoop-2.8.4.tar.gz  -C /usr/local

把hadoop-2.8.4改名为hadoop
进入到/usr/local/下执行

mv  hadoop-2.8.4  hadoop

在这里插入图片描述

8、配置hadoop环境变量(也在主机下执行)
vim  /etc/profile

修改配置文件,如下图
在这里插入图片描述
一定要动手操作,不然复制过去还是一脸懵逼,要体验Hadoop配置的精髓😂

export JAVA_HOME=/usr/jdk/jdk1.8.0_131
export JRE_HOME=$JAVA_HOME/jre
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib

立即让配置文件生效,执行命令

source  /etc/profile

此时,可以直接使用hadoop指令了,查看hadoop版本信息命令

  hadoop version

在这里插入图片描述

9、关闭防火墙(三台机器都要关闭)
service iptables status (查看防火墙状态)
service iptables stop(临时关闭,不需要重启虚拟机)
chkconfig iptables off(永久关闭,需要重启机器生效)

在这里插入图片描述

10、修改主机的配置文件

进入到/uer/local/hadoop文件夹
然后创建三个文件夹,
NameNode也记录着每个文件中各个块所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息在系统启动时由数据节点重建
datanode是数据块在DataNode进程所在的节点上以文件的形式存储在本地磁盘上
一个是数据本身一个是元数据(数据块的长度,块数据的校验和,以及时间戳)

mkdir namenode
mkdir datanode
mkdir tmp

进入到 /usr/loacal/hadoop/etc/hadoop文件
在这里插入图片描述
然后进行编辑配置文件

vim  hadoop-env.sh

原文件
在这里插入图片描述改后文件
在这里插入图片描述
编辑第二个文件 core-site.xml

vim core-site.xml

在这里插入图片描述
在configuretion中添加

       <property>
           <name>fs.defaultFS</name>
           <value>hdfs://master:9000</value>
       </property>
       <property>
           <name>hadoop.tmp.dir</name>
           <value>/usr/local/hadoop/tmp</value>
        </property>

改后效果
在这里插入图片描述
编辑第三个文件

vim  hdfs-site.xml

在这里插入图片描述
添加如下配置

 <property>
         <name>dfs.replication</name>
         <value>2</value>
 </property>
 <property>
      <name>dfs.namenode.secondary.http-address</name>
       <value>master:50090</value>
 </property>

  <property>
       <name>dfs.name.dir</name>
       <value>/usr/local/hadoop/namenode</value>
  </property>
  <property>
       <name>dfs.data.dir</name>                                                                   <value>/usr/local/hadoop/datanode</value>
  </property>

效果如下
在这里插入图片描述
然后准备编辑第四个文件,vim mapred-site.xml(没有mapred-site.xml但是有一个 mapred-site.xml.template
5、,我们可以把名字改一下就可以了)

mv  mapred-site.xml.template mapred-site.xml
vim mapred-site.xml 

然后添加
在这里插入图片描述
添加配置

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>

效果如下
在这里插入图片描述
新增配置最后一个文件,编辑第五个文件yarn-site.xml,坚持就是胜利🤞

vim yarn-site.xml

在这里插入图片描述

  <property> 
    <name>yarn.resourcemanager.hostname</name>  
    <value>master</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-aggregation.retain-seconds</name>  
    <value>604800</value> 
  </property>  
  <property> 
    <name>yarn.nodemanager.resource.memory-mb</name>  
    <value>2000</value> 
  </property>  
  <property> 
    <name>yarn.scheduler.maximum-allocation-mb</name>  
    <value>2000</value> 
  </property>  
  <property> 
    <name>yarn.scheduler.minimum-allocation-mb</name>  
    <value>500</value> 
  </property>  
  <property> 
    <name>mapreduce.reduce.memory.mb</name>  
    <value>2000</value> 
  </property>  
  <property> 
    <name>mapreduce.map.memory.mb</name>  
    <value>2000</value> 
  </property>  
  <property> 
    <name>yarn.nodemanager.vmem-pmem-ratio</name>  
    <value>2.1</value> 
  </property>  
  <property> 
    <name>yarn.resourcemanager.address</name>  
    <value>master:8032</value> 
  </property>  
  <property> 
    <name>yarn.resourcemanager.scheduler.address</name>  
    <value>master:8030</value> 
  </property>  
  <property> 
    <name>yarn.resourcemanager.resource-tracker.address</name>  
    <value>master:8031</value> 
  </property> 

在这里插入图片描述
配置环节就到此结束了,现在开始最后一个编辑,配置一下机器的名称

vim slavers

在这里插入图片描述
然后记得编辑的那些东西保存啊,我没有写保存,你们一定要保存啊,不然就白费了,编辑好的文件 esc一下 然后输入:wd 保存

11、下发配置文件到分机上

下发hadoop到分机

两个都要执行哦

scp -r /usr/local/hadoop root@slaver1:/usr/local/
scp -r /usr/local/hadoop root@slaver2:/usr/local/

只是下发jdk的安装包,我的分机都没有安装,所以需要下发一下我的jdk文件

scp -r /usr/jdk  root@slaver1:/usr/jdk/
scp -r /usr/jdk  root@slaver2:/usr/jdk/

执行成功后记得去改下配置文件
主机配置了jdk和hadoop,但是分机没有配置,所以需要手动的去配置一下,如果懒得小伙伴可以这样
直接下发配置脚本

scp -r /etc/profile root@slaver1:/etc/
scp -r /etc/profile root@slaver2:/etc/

ok,大功告成,现在到启动了一步了,成不成功再次一举啊!!!

12、第一次执行的时候在主机下格式化namenode
hadoop namenode  -format

在这里插入图片描述

13、启动hadoop集群
start-all.sh   

在这里插入图片描述

启动成功后,可以检查一下启动状态

 jps

在这里插入图片描述
这个就是成功的集群状态,一定要有nameNode和dataNode没有的小伙伴就检查一下配置

14.访问:50070端口

外网访问一下http://192.168.94.128(主机ip):50070/
出现这个代表你的nameNode是启动成功的
在这里插入图片描述

15.访问8088端口,

成功如下图
在这里插入图片描述
看到了那个大象了吗?那个就是Hadoop的logo,开心吗?哈哈

16、测试mapreduce来实现对pi的计算

进入到/usr/local/hoaddop/shared/hadoop/mapreduce
执行 (这个就是测试集群,用Hadoop进行π运算)

   hadoop jar hadoop-mapreduce-examples-2.8.4.jar  pi 20  50

可能时间会长一点,但是一定要耐心等待啊,这可是大数据计算

在这里插入图片描述
恭喜你成功了!!!

17、关闭集群
stop-all.sh

感谢大家的观看,有什么建议或者我写的那点不对,大家可以评论或者私信,感谢大家的点评,配置和启动集群问题,可以私信给我,我会尽我的最大努力去解决问题!🤞

Logo

更多推荐