一、安装及hadoop的目录介绍

  1. 安装jdk和hadoop
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
sudo vi /etc/profile
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
//hadoop的安装与JDK雷同,需要配置环境变量和家目录
  1. hadoop目录介绍(标黑部分为重要目录)
    (1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
hadoop     //用来运行与hadoop相关的命令(输入hadoop进行直接回车,shell会打印出帮助信息)
hdfs			//hadoop命令的一个实现类
yarn         //与资源调度平台yarn相关的指令,yarn jar 可以将jar包程序在yarn上运行

(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件

slaves    //集群相关的配置,将集群中的主机名全部在slaves中文件中定义
hadoop-env.sh     //hadoop启动时需要加载的环境脚本,配置一下JAVA_HOME
core-site.xml       //与hadoop基础相关的配置  eg:fs.defaultFS   hadoop.dir
hdfs-site.xml      //与hdfs相关的配置
mapred-site.xml     //与mapreduce程序运行相关的配置(重要,涉及到程序调优和hivesql调优)
yarn-site.xml      //与资源调度平台相关的配置     eg:推测执行,任务调度算法

(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本

hadoop-daemon.sh      yarn-daemon.sh      //单起命令
start-dfs.sh        start-yarn.sh    stop-dfs.sh    stop-yarn.sh    //群起命令,需要配置slaves文件
start-balancer.sh      //用于节点上线或者下线平衡数据

(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例

注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。

配置历史服务器

vi mapred-site.xml

<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop101:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop101:19888</value>
</property>

sbin/mr-jobhistory-daemon.sh start historyserver     //在hadoop101上开启日志服务,通过hadoop101:19888访问日志服务器

开启日志聚集

<!-- 日志聚集功能使能 -->
vi yarn-site.xml

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

<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

二、完全分布式hadoop集群的搭建

1.知识准备
scp可以在不同机器上分发文件(文件夹)

scp    -r         $pdir/$fname       $user@hadoop$host:$pdir
    命令   递归       要拷贝的文件路径/名称    目的用户@主机:目的路径

	rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
	rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
		(1)基本语法
	rsync    -rvl       $pdir/$fname              $user@hadoop$host:$pdir
	命令   选项参数   要拷贝的文件路径/名称    目的用户@主机:目的路径
	  选项参数说明
		-r	递归
		-v	显示复制过程
		-l	拷贝符号连接

**************************************分发脚本*************************************************
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=103; host<105; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

2.分配好各个节点运行的进程(namenode,secondarynamenode,resourcemanager,historyserver datanode和nodemanager为所有节点共有)
配置好hdfs.site和yarn.site使用群起脚本启动start-dfs.sh start.yarn.sh

3.配置集群的免密登录ssh

ssh-keygen -t rsa        //生成公钥秘钥
//将公钥发送到各个节点中
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104