目录标题
前期虚拟机环境搭建
-
内存2G,硬盘50G NAT模式
-
1.安装好linux
选择centos7映像文件
-
2.启动centos
分区如下
/boot 200M
/swap 2g
/ 剩余
安装详情请看CentOS 7安装教程. -
3.安装VMToolsVMTools安装及使用.
-
4.关闭防火墙
centos6和centos7指令不一样了
-
5.设置静态IP,改主机名
修改克隆虚拟机的静态IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33
注意,适配器连接方式为NAT,ip地址的前三位要三者一致,Linux的VMnet8、Linux的ip地址,Windows的VMnet8这三个的前三位
修改主机名
-
6.记住改Hosts(这个改一次就行,之后克隆的都有,不放心可查看看看)
编写一个shell脚本即可:
-
7.创建一个一般用户liuyongjun,给他配置密码
useradd liuyongjun
passwd liuyongjun -
8.配置这个用户为sudoers
vim /etc/sudoers
在root ALL=(ALL) ALL
添加liuyongjun ALL=(ALL) NOPASSWD:ALL
保存时wq!强制保存 -
9.*在/opt目录下创建两个文件夹module和software,并把所有权赋给atguigu
mkdir /opt/module /opt/software
chown liuyongjun:liuyongjun /opt/module /opt/software
之后reboot,然后远程连接成功,这样环境配置成功 -
10.关机,快照,克隆得到103/104
集群配置开始
从这里开始要以一般用户登陆
1.克隆的虚拟机改IP和主机名,每克隆一台都要改ip地址和主机名
2.搞一个分发脚本xsync
在/home/liuyongjun/bin这个目录下存放的脚本,liuyongjun用户可以在系统任何地方直接执行。
- (a)在/home/liuyongjun目录下创建bin目录,并在bin目录下xsync创建文件,文件内容如下:
在该文件中编写如下代码
#!/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=102; host<105; host++)); do
echo ------------------- hadoop$host --------------
rsync -av $pdir/$fname $user@hadoop$host:$pdir
done
- (b)修改脚本 xsync 具有执行权限
[liuyongjun@hadoop102 bin]$ chmod 777 xsync - (c)调用脚本形式:xsync 文件名称
xsync /home/liuyongjun/bin
注意,这的意思是将bin目录拷到相同位置,得到bin目录下文件
拷贝成功
3.配置免密登陆
1. 生成密钥对
ssh-keygen -t rsa 三次回车
2. 发送公钥到本机
ssh-copy-id hadoop102 输入一次密码
3. 分别ssh登陆一下所有虚拟机
ssh hadoop103
exit
ssh hadoop104
exit
4. 把/home/liuyongjun/.ssh 文件夹发送到集群所有服务器
xsync /home/liuyongjun/.ssh
4.在一台机器上安装Java和Hadoop,并配置环境变量,并分发到集群其他机器.
4.1 安装jdk
- 第一步 卸载系统自带的OpenJDK以及相关的java文件
- 1.java -version
- 可以看到系统自带的OpenJDK版本信息。
- 2.查询java软件安装情况
- rpm -qa | grep java
- 删除这两个即可
java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 - noarch文件不需要删除
- 3.开始删除:记住,普通用户没有删除权限,要改成root用户删除(如果前面的权限更改为和root用户权限一样就不用了)
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64 - 4.检查是否已经删除成功java - version
表明删除成功
- 1.java -version
- 第二步 下载最新稳定JDK
- 用SecureCRT工具将JDK导入到opt目录下面的software文件夹下面,“alt+p”进入sftp模式,如图所示
- 选择jdk1.8拖入
- 在Linux系统下的opt目录中查看软件包是否导入成功
将hadoop包也拖入了 - 解压JDK到/opt/module目录下
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
别忘记删除压缩包:
之后查看module文件,看看是否安装成功 - 配置JDK环境变量
- (1)先获取JDK路径
- (2)打开/etc/profile文件
sudo vim /etc/profile - (3)在profile文件末尾添加JDK路径,然后保存退出
- (1)先获取JDK路径
- 用SecureCRT工具将JDK导入到opt目录下面的software文件夹下面,“alt+p”进入sftp模式,如图所示
#java environment
export JAVA_HOME=/opt/module/jdk1.8.0_144
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
-
- (4)让修改后的文件生效
source /etc/profile- ()最后我们来进行一下测试,看看我们的环境变量是否配置成功
测试命令:java -version
- ()最后我们来进行一下测试,看看我们的环境变量是否配置成功
- (4)让修改后的文件生效
4.2 安装Hadoop
- 上面已经将文件复制到Linux的software下了
- 解压安装文件到/opt/module下面
tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/ - 查看是否解压成功
- 将Hadoop添加到环境变量
- (1)获取Hadoop安装路径
- (2)打开/etc/profile文件
- (3)在profile文件末尾添加hadoop路径,保存后退出
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:${HADOOP_HOME}/bin
export PATH=$PATH:${HADOOP_HOME}/sbin
-
- (4)让修改后的文件生效source /etc/profile
- hadoop version测试
- hadoop version测试
- (4)让修改后的文件生效source /etc/profile
4.3快速分发hadoop和java
- 1.将hadoop和jdk发到其他虚拟机
- xsync /opt/module/hadoop-2.7.2
- xsync jdk1.8.0_144
- xsync 直接加文件也行
- 2.拷贝配置文件/etc/profile
- 注意此配置文件的所有者是root用户
- 需要加sudo 起到临时拥有root用户权限
- su root
- 然后xsync /etc/profile
- 别忘记source /etc/profile
- 3.查看一下java和hadoop版本
- hadoop version
成功 - java -version
发现显示openjdk,原来是之前的openjdk未删除,
利用如下语句删除:(root用户有权限)
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64
在查看java -version
成功
- hadoop version
开始配置文件的修改
- 1.集群部署规划
hadoop102 | hadoop103 | hadoop104 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
- 对于HDFS集群来说,主机是hadoop102(NameNode在),从机是102,103,104
- 对于yarn集群来说,主机是hadoop103(ResourceManager在),从机是102,103,104
- 2.配置文件(注:这些配置文件都在/opt/module/hadoop-2.7.2/etc/hadoop下).
- (1)核心配置文件
- 配置core-site.xml
- 在该文件中编写如下配置
- (1)核心配置文件
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
-
- (2)HDFS配置文件
- 配置hadoop-env.sh
- 加入export JAVA_HOME=/opt/module/jdk1.8.0_144
- 配置hdfs-site.xml
- 在该文件中编写如下配置
- 配置hadoop-env.sh
- (2)HDFS配置文件
<!-- 指定HDFS副本数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
-
- (3)YARN配置文件
- 配置yarn-env.sh
- export JAVA_HOME=/opt/module/jdk1.8.0_144
- 配置yarn-site.xml
- 在该文件中增加如下配置
- 配置yarn-env.sh
- (3)YARN配置文件
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
-
- (4)MapReduce配置文件
- 配置mapred-env.sh
- export JAVA_HOME=/opt/module/jdk1.8.0_144
- 配置mapred-site.xml
- 配置mapred-env.sh
- (4)MapReduce配置文件
cp mapred-site.xml.template mapred-site.xml
-
-
- 在mapred-site.xml文件中增加如下配置
-
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop104:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop104:19888</value>
</property>
-
注意上面的配置,只配了namenode、secondarynamenode、resourcemanager
从机一台也没配 ,手动启动集群,从机是不需要配置的. -
最后的配置:
- 配置slaves(从机,小弟们)**
- /opt/module/hadoop-2.7.2/etc/hadoop/slaves
- 在该文件中增加如下内容:
hadoop102
hadoop103
hadoop104
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
- 配置slaves(从机,小弟们)**
-
3.在集群上分发配置好的Hadoop配置文件
- xsync /opt/module/hadoop-2.7.2/etc
-
4.查看文件分发情况
-
cat /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
- 成功配置
-
5.在104上启动历史服务器:mr-jobhistory-daemon.sh start historyserver
-
6.如果集群是第一次启动,需要在hadoop102上格式化(不小心再次格式化,解决办法见Hadoop(一)入门、hadoop架构、集群环境搭建.伪分布式)NameNode
hdfs namenode -format -
7.在hadoop102(对于hdfs来说102是主机)上启动HDFS
- start-dfs.sh
- start-dfs.sh
-
8.在hadoop103(对于YARN来说103是主机)上启动YARN
- start-yarn.sh
- 注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。
集群启动/停止方式总结
- 1.各个服务组件逐一启动/停止
(1)分别启动/停止HDFS组件
hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode
(2)启动/停止YARN
yarn-daemon.sh start / stop resourcemanager / nodemanager - 2.各个模块分开启动/停止(配置ssh是前提)常用
(1)整体启动/停止HDFS
start-dfs.sh / stop-dfs.sh
(2)整体启动/停止YARN
start-yarn.sh / stop-yarn.sh
注意:
如果集群出了问题
stop-dfs.sh
stop-yarn.sh
cd /opt/module/hadoop-2.7.2
rm -rf data logs
回到重新格式化NameNode,格式化出错,就见伪分布