一、安装及hadoop的目录介绍
- 安装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雷同,需要配置环境变量和家目录
- 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