目录
8.3 master公钥scp 复制给slave1,slave2
1.文件准备
ubuntu-20.04.4-desktop-amd64.iso ISO安装包
hadoop-3.2.1.tar.gz
jdk-8u321-linux-x64.tar.gz
2.创建虚拟机
选择物理桥接网络,推荐配置,内存4G。
用户名hadoop
3.安装jdk
3.1 文件复制
jdk-8u321-linux-x64.tar.gz 文件复制到虚拟机~目录下
3.2 解压
目标目录创建文件夹,解压
sudo mkdir /usr/lib/jdk
sudo tar -zxvf ~/jdk-8u321-linux-x64.tar.gz -C /usr/lib/jdk
3.3 添加环境变量
编辑~/.bashrc
sudo gedit ~/.bashrc
# 末尾追加如下代码
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_321
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
测试:
java
java -version
能正常返回值 说明jdk安装正常
4. 复制虚拟机
虚拟机关机 ,重命名虚拟机名称为master
VM界面虚拟机--管理--克隆 ,复制2份备份,命名为slave1,slave2
开启 3台虚拟机
5. 修改hostname
以master为例:
sudo gedit /etc/hostname
将原主机名修改为master
save&exit;
slave1,slave2 同样执行上述操作
6. 修改固定ip
查看网卡信息 ,以master为例:
ifconfig
# 报错则需要apt安装net-tool
sudo apt-get install net-tools
当前ip地址为192.168.1.5
修改配置文件
Ubuntu从17.10开始,取消在 /etc/network/interface 配置网卡,改为在/etc/netplan/XX-installer-config.yaml的yaml文件中配置IP地址。
替换输入以下字符:
更新配置
sudo netplan apply
check:
ip为配置文件预设ip,修改生效
另:桌面版ubuntu可以直接在网络设置处配置静态IP
slave1,slave2 同样执行上述操作
slave1 192.168.1.211
slave2 192.168.1.212
7.修改hosts文件
ubuntuhosts文件在 /etc/hosts
sudo gedit /etc/hosts
slave1,slave2 同样执行上述操作
8.ssh免密登录
8.1 查看ssh服务
ps -e | grep ssh
只有ssh-agent没有sshd 的服务,则需要安装 openssh-server
8.2 master 主机生成公钥 :
ssh-keygen -t rsa
按3次回车即可。
ls ~/.ssh/ 有这些文件 (id_rsa ,id_rsa.pub,known_host)
将id_rsa.pub(公钥) 写入到 ~/.ssh/authorized_keys 中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
8.3 master公钥scp 复制给slave1,slave2
scp ~/.ssh/id_dsa.pub hadoop@slave1:~/
scp ~/.ssh/id_dsa.pub hadoop@slave2:~/
在slave1,slave2执行:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
测试免密连接 :
如有异常:
删除三台机器 authorized_keys文件内容后,重新在master执行 ssh-keygen 命令生成pub秘钥,再scp到集群主机,追加到authorized_keys
9. 安装hadoop集群,修改配置文件
master主机先安装并配置好hadoop,再传递hadoop文件到slave集群。
9.1 安装包解压
执行以下命令:
sudo tar -zxvf ~/hadoop-3.2.1.tar.gz -C /usr/local/
#文件解压到 /usr/local/
#hadoop-3.2.1文件夹重命名为hadoop
sudo mv /usr/local/hadoop-3.2.1 /usr/local/hadoop
hadoop文件目录,由于是外源解压来,用户和用户组可能是1001,1001
修改用户和用户组,为当前用户
sudo chown -R hadoop /usr/local/hadoop
sudo chgrp -R hadoop /usr/local/hadoop
各个用户组,授权读写
sudo chmod -R 775 /usr/local/hadoop
9.2 修改配置文件
Hadoop 的各个组件均用XML文件进行配置, 配置文件都放在 /usr/local/hadoop/etc/hadoop
目录中:
- core-site.xml:配置通用属性,例如HDFS和MapReduce常用的I/O设置等
- hdfs-site.xml:Hadoop守护进程配置,包括namenode、辅助namenode和datanode等
- mapred-site.xml:MapReduce守护进程配置
- yarn-site.xml:资源调度相关配置
- workers : hadoop工作主机
9.2.1 修改 core-site.xml
cd /usr/local/hadoop/etc/hadoop
sudo gedit ./core-site.xml
新增
参数说明:
- fs.defaultFS:默认文件系统,HDFS的客户端访问HDFS需要此参数
- hadoop.tmp.dir:指定Hadoop数据存储的临时目录,其它目录会基于此路径, 建议设置到一个足够空间的地方,而不是默认的/tmp下
- hadoop.proxyuser.用户名.hosts /hadoop.proxyuser.用户名.groups ,分别为允许代理的超级用户名和允许的主机地址(hosts文件中映射的主机名)。(hive等其它组件要用到hdfs和yarn需要配置用户代理,如果只启动集群,此项可以暂时忽略)
9.2.2 修改 hdfs-site.xml
复制保存如下:
参数说明:
- dfs.replication:默认datanode备份文件个数
- dfs.name.dir:指定Hadoop数据namenode文件存储目录
- dfs.data.dir:指定Hadoop数据datanode文件存储目录
9.2.3 修改 mapred-site.xml
复制保存如下:
9.2.4 修改 yarn-site.xml
复制保存如下:
9.2.5 修改workers
如果输入master,slave1,slave2 ,则master节点也有datanode进程
输入slave1,slave2 ,则master不参与DataNode,且没有secondarynamenode
9.3 复制到slave集群
master主机打包目录
tar -zcvf hadoop.tar.gz /usr/local/hadoop
发送到slave
scp hadoop.tar.gz hadoop@slave1:~/
scp hadoop.tar.gz hadoop@slave2:~/
解压
tar -zxvf ~/hadoop.tar.gz /usr/local/
--注意文件路径 可能解压到其它目录需要移动
同 9.1 ,给文件授权。
9.4 添加hadoop环境变量
sudo vi ~/.bashrc
注意: 环境变量中 path 只能保留一个变量,否则不会生效
9.5 启动集群
9.5.1 master 首次 HDFS格式化
hadoop namenode -format
控制台出现INFO,没有ERROR , 表示格式化成功
9.5.2 启动集群
cd /usr/local/hadoop
./sbin/start-all.sh
异常处理 :
ERROR: JAVA_HOME is not set and could not be found.
修改$HADOOP_PATH 目录下 /etc/hadoop/ hadoop-evn.sh 文件,找到 #export JAVA_HOME ,取消注释,输入
也可单独启动sbin目录下 start-dfs.sh 和 start-yarn.sh
可在浏览器访问:http://master:9870 HDFSweb
可在浏览器访问:http://master:8088 YARNweb
10. 访问测试
10.1 命令行测试HDFS
10.2 hadoop HDFSweb总览页面
10.3 WEB端文件索引页面:
10.4 yarn的WEB页面:
hadoop3.0端口已有50070改为9870
完结~