hadoop框架搭建
-
前期准备
-
准备hadoop3.3.0.tar.gz
-
centos7
-
Xshell7
-
-
开始安装
-
安装虚拟机
-
克隆虚拟机出来三台
-
开始使用时必须切换到root权限下,否则很多东西无法操作
-
-
配置相关的网络设置
-
打开网络设置
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no 静态ip地址 BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=048a74f6-bffe-498c-8385-e18d3cf4477b DEVICE=ens33 ONBOOT=yes ip地址 IPADDR=192.168.10.100 网关 GATEWAY=192.168.10.2 DNS服务器 DNS1=192.168.10.2
-
配置hosts文件,是得域名和ip可以对应
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 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 192.168.10.105 hadoop105 192.168.10.106 hadoop106 192.168.10.107 hadoop107 192.168.10.108 hadoop108
-
配置hostname中的文件的内容,修改主机名称
vim /etc/hostname
hadoop100
-
重启虚拟机
reboot
-
重启完虚拟机后使用如下命令来观察是否修改完成
ifconfig hostname
-
修改windows对应的hosts文件,使得主机和ip可以得以对应
-
-
连接xsheel
-
使用IP地址或者主机名即可连接
-
将jdk1.8和hadoop3.3.0拖进去,拖到software文件中,建文件,详情百度
-
解压jdk
tar -zxvf jdk-8u212-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_212 export PATH=$PATH:$JAVA_HOME/bin
-
source一下profile,使得环境变量生效
source /etc/profile
-
java查看命令是否生效
java -version 如果不行,则执行 reboot
-
解压hadoop
tar -zxvf hadoop-3.3.0.tar.gz -C /opt/module/
-
编辑环境变量文件
sudo vim /etc/profile.d/my_env.sh
#HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-3.3.0 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
-
source一下profile,环境变量生效
source /etc/profile
-
hadoop查看命令
hadoop version 如果不行的话 reboot
-
-
脚本的编写(集群分发脚本)
-
来到 module目录下
scp -r jdk1.8.0_212/ walker@hadoop106:/opt/module/ scp 递归 文件名 用户@主机:路径
scp -r walker@hadoop105:/opt/module/* walker@hadoop107:/opt/module/
-
rsync远程同步工具
rsync -av /opt/module walker@hadoop105:/opt/module 远程同步工具,很好用
-
编写xsync集群分发脚本
-
回到walker目录下
mkdir bin cd bin vim xsync
#!/bin/bash #1. 判断参数个数 if [ $# -lt 1 ] then echo Not Enough Arguement! exit; fi #2. 遍历集群所有机器 for host in hadoop105 hadoop106 hadoop107 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
-
赋予xsync权限,此时xsync即可使用
chmod 777 xsync
-
分发bin目录下的xsync文件
sudo ./bin/xsync /etc/profile.d/my_env.sh
-
分发完成后,记得去source一下profile,使得环境变量生效
source /etc/profile
-
-
SSH免密登录的配置
-
来到jar目录
-
使用命令生成密钥对,然后三次回车
ssh-keygen -t rsa
-
把公钥传递给其他的两台机器
ssh-copy-id hadoop106
-
其他机器和本机也是类似操作,使用ssh先生成密钥对,然后再把公钥分发
-
在root用户下也是这样,配置ssh免密的登录
-
-
配置文件
-
配置core-site.xml
<!-- 指定 NameNode 的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:8020</value> </property> <!-- 指定 hadoop 数据的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-3.3.0/data</value> </property> <!-- 配置 HDFS 网页登录使用的静态用户为 walker --> <property> <name>hadoop.http.staticuser.user</name> <value>walker</value> </property>
-
hdfs-site.xml
<!-- nn web 端访问地址--> <property> <name>dfs.namenode.http-address</name> <value>hadoop102:9870</value> </property> <!-- 2nn web 端访问地址--> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop104:9868</value> </property>
-
yarn-site.xml
<!-- 指定MR 走 shuffle --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定 ResourceManager 的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop103</value> </property>
-
mapred-site.xml
<!-- 指定 MapReduce 程序运行在 Yarn 上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
-
配置workers,把主机都写进去,注意不能有空格
hadoop102 hadoop103 hadoop104
-
分发集群配置
xsync /opt/module/hadoop-3.3.0/etc/hadoop/
-
启动日志命令
mapred --daemon start historyserver
-
-
群起集群,集群完成
-
启动集群,首先格式化
hdfs namenode -format
-