1.安装模版虚拟机,(以下地址均为实例,具体情况具体应用)IP地址192.168.10.100,主机名称hadoop100,内存4G,硬盘50G
2.配置要求
1)确认虚拟机联网,ping www.baidu.com试试,ping的同即可
2)安装epel-release
epel-release全称Extra Packages for Enterprise Linux,为"红帽系"的操作系统提供的额外的软件包,适用于RHEL,Centos和Scientific Linux.相当于一个软件仓库.安装原因为大多数rpm包在官方repository中是找不到的
(采用yum方式安装,-y为对所有回答都回答yes)
yum install -y epel-release
如果Linux安装的是最小系统版,还需要安装net-tool和vim
net-tool:工具包集合,包含ifconfig等命令
yum install -y net-tools
vim:编辑器
yum install -y vim
3)关闭防火墙
systemctl stop firewalld
systemctl disable firewalld.service
在企业开发中,公司一般都会对外设置安全的防火墙,所以单个服务器防火墙关闭是无影响的,具体情况具体对待
4)创建用户(这里示例为user1),并修改user1的密码
useradd user1
passwd user1
5)给用户配置root权限,方便后期加sudo执行root权限的命令
(在root账户下修改/etc/sudoers文件) vim /etc/sudoers
在%wheel下添加(
具体位置为:
##Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL的下方)
user1 ALL=(ALL) NOPASSWD:ALL
不要放在root行下,因为所有的用户都属于wheel组,你在root下配置user1具有免密功能,但按行执行到%wheel行时,又会被覆盖为普通用户,需要密码,所以切记user1要放到%wheel下
6)在/opt目录下创建文件夹,并修改所属主和所属组
在/opt目录下创建module,software文件夹
mkdir /opt/module
mkdir /opt/software
修改module,software文件夹的所有者和所属组均为user1用户
chown user1:user1 /opt/module
chown user1:user1 /opt/module
查看module,software文件夹的所有者和所属组
cd /opt/
ll
7)卸载虚拟机自带的JDK
如果安装的是Linux最小版跳过这步
rpm -qa | grep -i java | xargs -n1 rpm -e --nodes
解释:
8)重启
reboot
1.利用模版机hadoop100,克隆三台:hadoop102,hadoop103,hadoop104(克隆时关闭hadoop100)
2.修改克隆机IP,以hadoop102举例
1)修改克隆机的静态IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改为:
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="ens33"
IPADDR=192.168.10.102
PREFIX=24
GATEWAY=192.168.10.2
DNS1=192.168.10.2
2)查看Linux虚拟机的虚拟网络编辑器,编辑>虚拟网络编辑器>VMnet8
3)查看Windows系统适配器VMware Network Adapter VMnet8的IP地址
4)保证Linux系统ifcfg-ens33文件中IP地址,虚拟网络编辑器地址和Windows系统VM8网络IP地址相同
3.修该克隆机主机名,以hadoop102为例
1)修改主机名
vim /etc/hostname 为hadoop102
2)配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts
vim /etc/hosts
添加如下内容:
192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
4.重启hadoop102
reboot
5.修改windos的主映射文件(hosts文件)
1)进入C:\Windows\System32\driver\etc
2)打开hosts文件添加如下内容
192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
注意window10无法直接修改,建议将hosts文件复制到桌面修改后再复制回C:\Windows\System32\driver\etc替换
6.在hadoop102中安装JDK
1)卸载JDK:上文有
2)使用XShell将JDK导入/opt/software下
这里我使用的是jdk-8u212-linux-x64.tar.gz
3)解压JDK到/opt/module目录下
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module
4)配置JDK环境变量
新建/etc/profile.d/my_env.sh文件
sudo vim /etc/profile.d/my_env.sh
添加以下内容:
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
保存后退出(:wq)
source以下/etc/profile文件,让环境变量生效
5)测试JDK是否安装成功
java -version
如果有java version "1.8.0_212"类似出现则成功(没有出现但确认上面无错reboot一下)
1.用XShell文件将hadoop-3.1.3.tar.gz导入opt目录下的software下
2.解压到/opt/module下
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
3.将Hadoop添加到环境变量
1)获取Hadoop安装路径
pwd
显示:/opt/module/hadoop-3.1.3
2)打开/etc/profile.d/my_env.sh文件
sudo vim /etc/profile.d/my_env.sh
在文末添加:
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
3)source /etc/profile
4.测试是否安装成功hadoop version
显示:Hadoop 3.1.3
5.重启
sudo reboot
截止目前还需做:配置集群,单点启动,配置ssh,群起并测试集群
1.编写集群分发脚本(便捷我们搭建)
1)这里要了解两个工具scp和rsync
scp为拷贝工具,rsync为同步工具,两者区别在于scp为全复制,rsync为只复制被更改文件
语法规则:
scp -r $user@$host:$pdir/$fname $user@$host:$pdir/$fname
rsync -av $user@$host:$pdir/$fname $user@$host:$pdir/$fname
命令 选项参数 被拷贝用户@主机:要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
-r是递归,-a是归档拷贝,-v显示复制过程
如果是拷贝(同步)的是本地用户则被拷贝用户@主机:都可以省略,如果目的地用户为本地则目的用户@主机:可写为./
2)了解完来实现脚本
cd /home/atguigu
mkdir bin(选择这里创建时方便我们,声明在了全局环境变量的路径里了 可以用echo $PATH查看全局环境变量)
cd bin
vim xsync
在文件编写如下
#!/bin/bash
if [ $# -lt 1 ]
then
echo Not Enough Argument!
exit;
fi
for host in hadoop102 hadoop103 hadpoop104
do
echo ========= $host =========
for file in $@
do
if [ -e $file ]
then
pdir=$(cd -P $(dirname $file); pwd)
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
3)修改权限
chmod 777 xsync
4)将脚本复制到/bin中,以便全局调用
sudo cp xsync /bin/
5)同步环境变量
sudo ./bin/xsync /etc/profile.d/my_env.sh
6)hadoop103,hadoop104刷新一下
source /etc/profile
2.ssh免密配置
1)cd /home/atguigu/.ssh
2)生成公钥
ssh-keygen -t rsa
3)拷贝发送公钥
ssh-copy-id hadoop102(一定要给自己也搞一下免密,不然后面会出错)
ssh-copy-id hadoop103
ssh-copy-id hadoop104
4)完成后可以cat authorized_keys看看是不是都配齐整了
5)介绍一下.ssh文件夹下的几个文件
known_hosts 记录ssh访问过计算机的公钥
id_rsa 生成的私钥
id_rsa.pub 生成的公钥
authorized_keys 存放授权过的无密登录服务器公钥
Haoop配置文件分为默认配置文件和自定义配置文件,想修改某一默认配置值时应该去修改自定义配置文件,更改相应属性值
默认配置文件有
对应的有自定义配置文件:core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml,他们都存放在$HADOOP_HOME/etc/hadoop中
1)配置core-site.xml
cd #HADOOP_HOME/etc/hadoop
vim core-site.xml
在
fs.defaultFS
hdfs://hadoop102:8020
hadoop.tmp.dir
/opt/module/hadoop-3.1.3/data
hadoop.http.staticuser.user
user1
2)配置hdfs-site.xml
vim hdfs-site.xml
dfs.namenode.http-address
hadoop102:9870
dfs.namenode.secondary.http-address
hadoop104:9868
3)YARN配置文件
vim yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
hadoop103
yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
4)MapReduce配置文件
vim mapred-site.xml
mapreduce.framework.name
yarn
5)分发Hadoop配置文件
xsync /opt/module/hadoop-3.1.3/etc/hadoop/
6)配置workers
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
增加:
hadoop102
hadoop103
hadoop104
7)同步
xsync /opt/module/hadoop-3.1.3/etc
4.启动集群
1)第一次启动需要再102节点格式化NameNode
hdfs namenode -format
5.配置历史服务器
1)vim mapred-site.xml
mapreduce.jobhistory.address
hadoop102:10020
mapreduce.jobhistory.webapp.address
hadoop102:19888
2)分发配置
xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml
3)在hadoop102启动历史服务器
mapred --daemon start historyserver
4)查看JobHistory
http://hadoop102:19888/jobhistory
6.开启日志聚集功能
1)vim yarn-site.xml
yarn.log-aggregation-enable
true
yarn.log.server.url
http://hadoop102:19888/jobhistory/logs
yarn.log-aggregation.retain-seconds
604800
2)老样子分发
xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml
3)使用前要重启NodeManager,ResourceManager和HistoryServer
sbin/stop-yarn.sh
mapred --daemon stop historyserver
start-yarn.sh
mapred --daemon start historyserver
4)历史服务器地址
http://hadoop102:19888/jobhistory
至此,Hadoop搭建结束
(至此,源稚生小队全灭)
附加两个脚本便捷日后操作
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop 集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start
historyserver"
;;
"stop")
echo " =================== 关闭 hadoop 集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop
historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac
#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
echo =============== $host ===============
ssh $host jps
done