先准备好:
hadoop3.3.0
secureCRT提取码:u3cd
jdk官网
centos7
systemctl stop firewalld
systemctl disable firewalld.service
sudo vim /etc/sudoers
sudoers文件中找到##Allow people in group wheel to run all commands
,并添加andy ALL=(ALL) NOPASSWD:ALL
注:andy是我的用户名
如果你没有创建用户,可以使用以下命令:
创建用户useradd 用户名
创建密码passwd 用户名
补充:vim 知识
先查看IP地址,在终端中输入ifconfig
IP:192.168.23.10
我们将该ip设为静态的,下次开机ip就不会变了。(如果你想把这个IP地址改变
,只需改变它的主机号
,网络号
不需要改变,最后输入service network restart
)
命令:
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
把BOOTPROTO
改为static
添加:
IPADDR=192.168.23.10
GATEWAY=192.168.23.2
DNS1=192.168.23.2
在输入重启网络命令:
service network restart
sudo vim /etc/hostname
sudo vim /etc/hosts
添加的内容如下
根据自己的IP地址,填入连续的IP,后面的是主机名
注意:我们同样也需要把上面的ip地址映射
到Windows
的hosts
中
C:\Windows\System32\drivers\etc
如果不能更改可以把hosts
复制出来,修改后再替换即可
sudo yum install -y epel-release
如果安装出现以下情况
解决:kill -9 进程号
,在重新执行命令
openjdk
,并创建/opt/module/
和/opt/software
su root
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
/opt/module
和/opt/software
sudo mkdir /opt/module
sudo mkdir /opt/software
修改/opt/module
和/opt/software
的所有权
sudo chown andy:andy /opt/module /opt/software
注:andy:andy是我的用户名
用secureCRT连接linux后,安装yum -y install lrzsz,输入rz
,找到hadoop和jdk文件位置。
注:找到文件后,要选择add。我把文件放在了/opt/software
中
把文件解压到/opt/module
中
tar -zxvf /opt/software/hadoop-3.3.0.tar.gz -C /opt/module/
tar -zxvf /opt/software/jdk-8u281-linux-x64.tar.gz -C /opt/module/
配置环境
sudo vim /etc/profile.d/my_env.sh
添加
#JAVA HOME
export JAVA_HOME=/opt/module/jdk1.8.0_281
export PATH=$PATH:$JAVA_HOME/bin
#Hadoop
export HADOOP_HOME=/opt/module/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
注:JAVA_HOME 和HADOOP_HOME是Hadoop和jdk的位置
保存后,输入source /etc/profile
,让环境立刻起效
检验:hadoop和jdk是否安装好
hadoop
java
hadoop02
、hadoop03
克隆之前,需要先关闭虚拟机。
主机名
和IP地址
,两台都要修改sudo vim /etc/hostname
它们的主机名分别是hadoop02
、hadoop03
因为是克隆的第一台,主机名和ip地址都是上一台的
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改IPADDRKK
它们的IP分别是192.168.23.11
和192.168.23.12
注:它们是我的IP地址,需要修改
reboot
主机名、IP地址、网络、hadoop和jdk
hostname
ifconfig
ping www.baidu.com
执行
java
hadoop
注:都是在普通用户
ssh-keygen -t rsa
然后敲三次回车
然后生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
位置在:/home/用户名/.ssh
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
注意:创建无密登录需要,分别在hadoop01、hadoop02、hadoop03都配置一下。
注:它们都是在普通用户下配置的无密登录,在普通用户创建的只能登陆普通用户的。
都在root用户
创建无密登录,就能登录root用户了。
注:hadoop02 的ip地址已经映射到了hosts
中
家目录
下创建一个bin
文件,并进入bin中mkdir /home/用户/bin
cd bin
xsync
文件vim xsync
添加的文件如下:
注意:需要把for host in hadoop01 hadoop02 hadoop03
中的hadoop01、hadoop02、hadoop03
改为自己的主机名,一定要改
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop01 hadoop02 hadoop03
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
该脚本主要是应用:rsync
相关知识:
linux 远程拷贝命令
xsync
的权限sudo chmod 777 xsync
sudo cp xsync /bin/
xsync /home/用户/bin
把bin中的文件分发给其他虚拟机 hadoop01、hadoop02、hadoop03
提醒:注意value中的内容
core-site.xml
cd /opt/module/hadoop-3.3.0/etc/hadoop/
vim core-site.xml
在
中添加内容:
fs.defaultFS
hdfs://hadoop01:8020
hadoop.tmp.dir
/opt/module/hadoop-3.3.0/data
hadoop.http.staticuser.user
andy
注意:文件中的
、
、
中的内容,
第一个要hadoop01
,这个是我的主机名
第二个是/opt/module/hadoop-3.3.0/data
,这个是data的位置,注意路径是否存在;
第三andy
是我的用户名
hdfs-site.xml
vim hdfs-site.xml
在
中添加内容:
dfs.namenode.http-address
hadoop01:9870
dfs.namenode.secondary.http-address
hadoop03:9868
注意value中内容:
hadoop01和hadoop03是我的主机名
yarn-site.xml
vim yarn-site.xml
在
中添加内容:
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
hadoop02
yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
yarn.log-aggregation-enable
true
yarn.log.server.url
http://hadoop01:19888/jobhistory/logs
yarn.log-aggregation.retain-seconds
604800
注意:
vim mapred-site.xml
在
中添加内容:
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
hadoop01:10020
mapreduce.jobhistory.webapp.address
hadoop01:19888
注意:
(5)将配置文件发给其他虚拟机
xsync /opt/module/hadoop-3.3.0/etc/hadoop
注意:在hadoop02和hadoop03上查看文件是否存在
cat /opt/module/hadoop-3.3.0/etc/hadoop/core-site.xml
vim workers
xsync /opt/module/hadoop-3.3.0/etc/hadoop/workers
注意:查看hadoop02、hadoop03是否接收到文件
cat /opt/module/hadoop-3.3.0/etc/hadoop/workers
cd /opt/module/hadoop-3.3.0
bin/hdfs namenode -format
会在 /opt/module/hadoop-3.3.0
/下生成data
和logs
文件
如果一会儿在运行集群中出现问题,需要把data和logs删除,在进行初始化
集群出现问题注意配置文件是否有问题
sbin/start-dfs.sh
cd /opt/module/hadoop-3.3.0
sbin/start-yarn.sh
hadoop01、hadoop02、hadoop03
启动情况vim /home/用户/bin/myhadoop.sh
输入内容:
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop 集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh hadoop01 "/opt/module/hadoop-3.3.0/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop02 "/opt/module/hadoop-3.3.0/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh hadoop01 "/opt/module/hadoop-3.3.0/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop 集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh hadoop01 "/opt/module/hadoop-3.3.0/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop02 "/opt/module/hadoop-3.3.0/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop01 "/opt/module/hadoop-3.3.0/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac
注意:/opt/module/hadoop-3.3.0
是安装hadoop的路径
,这里需要修改
修改权限并复制到/bin
chmod 777 myhadoop.sh
sudo cp myhadoop.sh /bin/
使用:
启动:myhadoop.sh start
停止:myhadoop.sh stop
vim /home/用户/bin/jpsall
输入内容如下:
#!/bin/bash
for host in hadoop01 hadoop02 hadoop03
do
echo =============== $host ===============
ssh $host jps
done
修改权限并复制到/bin
chmod 777 jpsall
sudo cp jpsall /bin/
xsync /home/andy/bin/