【2020最新保姆级教学】搭建hadoop-3.2.1|附搭建踩的坑
“菜狗”花了一周(真的是裂开了)的时间才学会搭建,所以写博客记录一下,也让大家少走一些弯路,文字一定要慢慢看,漏一个,你可能找bug就要花好久好久好久~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在阿里云,腾讯云 ,百度云上分别购买一台服务器(阿里云买的是ESC),为什么在不同的平台购买服务器,因为贫穷。太真实了!
(备注:为了写这篇博客,将本来搭建好的hadoop3,服务器都重装系统了,从零开始)
实现目标:一个亿???不,在三台Ubuntu Server 16.04.1 LTS 64位(三台最好都是一样版本)搭建好hadoop3.2.1集群,其中阿里云的服务器Master,剩下2台分别是Worker1,Worker2。
准备工作:
- 安装XSHELL和XFTP6
- 在Xshell中新建会话
-
- 剩下两台的主机名就是Worker1,Worker2,对应公网
-
- 备注(用户名和密码,在对应服务器重置实例密码中找 比如 阿里云初始用户就是root,腾讯云就是ubuntu)
- 终于可以点击确定,再双击左侧的Master
- 成功标志
- 导入Worker1,Worker2(同样的步骤)
-
正式开始:
创建Hadoop用户(在Master,Worker1,Worker2执行)
创建hadoop用户
sudo useradd -m hadoop -s /bin/bash
设置用户密码(输入两次)
sudo passwd hadoop
添加权限
sudo adduser hadoop sudo
切换到hadoop用户
su hadoop
更新apt (在Master,Worker1,Worker2执行)
sudo apt-get update
安装Vim (在Master,Worker1,Worker2执行)
sudo apt-get install vim
安装SSH、配置SSH免密登录 (在Master,Worker1,Worker2执行)
安装SSH
sudo apt-get install openssh-server
配置SSH免密登录
ssh localhost
exit
cd ~/.ssh/
ssh-****** -t rsa #一直按回车
cat ./id_rsa.pub >> ./authorized_keys
验证免密(不用输入密码啦,和第一次对比)
ssh localhost
安装Java环境 (在Master,Worker1,Worker2执行)
sudo apt-get install default-jre default-jdk
配置环境变量文件
vim ~/.bashrc
在文件首行加入
export JAVA_HOME=/usr/lib/jvm/default-java
让环境变量生效
source ~/.bashrc
验证
java -version
修改主机名(在Master,Worker1,Worker2执行)
sudo vim /etc/hostname
将文件中原有的主机名删除,Master中写入Master,Worker1中写入Worker1,Worker2...(同理)
重启三个服务器(网页上实现)
重启成功后,再次连接会话,发现主机名改变了
注意:一定要切换回hadoop用户
su hadoop
***修改IP映射(在Master,Worker1,Worker2执行)
sudo vim /etc/hosts
Master中
Worker1,Worker2中
注意:由于阿里云只有私网开放端口,所以在Master中采用私网ip
验证(在Master,Worker1,Worker2中都执行,看是否都ping成功(loss=0),如果失败,后面的操作也是不行的)
ping Master -c 3
ping Worker1 -c 3
ping Worker2 -c 3
SSH免密登录其他节点(在Master上执行)
在Master上执行
cd ~/.ssh
rm ./id_rsa* # 删除之前生成的公匙(如果有)
ssh-****** -t rsa # 一直按回车就可以
cat ./id_rsa.pub >> ./authorized_keys
scp ~/.ssh/id_rsa.pub aaa@qq.com:/home/hadoop/
scp ~/.ssh/id_rsa.pub aaa@qq.com:/home/hadoop/
在Worker1,Worker2都执行
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub # 用完就删掉
验证免密登录
ssh Worker1
exit
ssh Worker2
exit
注意:一定要在master下执行,不要验证完Worker1后忘记退出(踩坑)
安装hadoop3.2.1(在Master中执行)
下载网址:hadoop3.2.1下载网址
下载好,之后通过Xftp上传到Master的/home/hadoop中
安装
解压
cd /home/hadoop
sudo tar -zxf hadoop-3.2.1.tar.gz -C /usr/local #解压
cd /usr/local/
sudo mv ./hadoop-3.2.1/ ./hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限
验证
cd /usr/local/hadoop
./bin/hadoop version
***配置hadoop环境 (易错环节)
配置环境变量
vim ~/.bashrc
在首行中写入
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
使得配置生效
source ~/.bashrc
创建文件目录(为后面的xml做准备)
cd /usr/local/hadoop
mkdir dfs
cd dfs
mkdir name data tmp
cd /usr/local/hadoop
mkdir tmp
配置hadoop的java环境变量
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
vim $HADOOP_HOME/etc/hadoop/yarn-env.sh
两个的首行都写入
export JAVA_HOME=/usr/lib/jvm/default-java
配置workers
cd /usr/local/hadoop/etc/hadoop
vim workers
删除掉原有的localhost,因为我们有2个worker,就把这2个的名字写入
Worker1
Worker2
配置 core-site.xml
vim core-site.xml
因为我们只有一个namenode,所以用fs.default.name,不采用fs.defalutFs
其次确保/usr/local/hadoop/tmp这个目录存在
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://Master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
配置 hdfs-site.xml
vim hdfs-site.xml
dfs.namenode.secondary.http-address确保端口不要和core-site.xml中端口一致导致占用
确保/usr/local/hadoop/dfs/name :/usr/local/hadoop/dfs/data 存在
因为我们只有2个Worker,所以dfs.replication设置为2
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
配置mapred-site.xml
vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置 yarn-site.xml
vim yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
将hadoop压缩
cd /usr/local
tar -zcf ~/hadoop.master.tar.gz ./hadoop #压缩
cd ~
复制到Worker1中
scp ./hadoop.master.tar.gz Worker1:/home/hadoop
复制到Worker2中
scp ./hadoop.master.tar.gz Worker2:/home/hadoop
温馨提示:由于是不同平台的服务器,复制时间比较久,请耐心等待
在Worker1、Worlker2上执行
解压
sudo rm -r /usr/local/hadoop # 删掉旧的(如果存在)
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local #解压
sudo chown -R hadoop /usr/local/hadoop #修改权限
首次启动需要先在 Master 节点执行 NameNode 的格式化,之后不需要
hdfs namenode -format
(注意:如果需要重新格式化 NameNode ,才需要先将原来 NameNode 和 DataNode 下的文件全部删除!!!!!!!!!)
#看上面的文字,不要直接复制了
rm -rf $HADOOP_HOME/dfs/data/*
rm -rf $HADOOP_HOME/dfs/name/*
启动 (在Master上执行)
start-all.sh
mr-jobhistory-daemon.sh start historyserver
Master中,出现Warning不影响
jps
Master出现下面5个,Worker1和Worker2出现下面3个,表示搭建成功!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
关闭hadoop集群(在Master上执行)
stop-all.sh
mr-jobhistory-daemon.sh stop historyserver
***易错点提醒(如果发生错误,来这里看看)
- 创建完hadoop用户后,操作一定要在hadoop用户下执行(su hadoop 切换)
- 特别是在修改完完主机名后的重启
- 配置节点的IP映射的时候,只有master中的master是私网ip,其他的2+3+3都是公网ip地址
- 如果没有注意到,ping可能成功
- vim ~/.bashrc 后,一定要执行source ~/.bashrc,使得环境变量生效
- 在配置hadoop的core-site.xml,hdfs-site.xml,很容易发生端口被占用,如果你的9000等等端口占用的时候,可以换用别的端口,core-site.xml中是namenode的端口,hdfs-site.xml是secondary namenode的端口,这两个端口要不一样
- 如果你发现的hadoop某个配置文件配错了,但是你已经把压缩包复制过去了,记得改的时候,必须三个节点都要改到
- 配置文件中的目录一定要是存在的,如果不存在,需要mkdir
- 因为只有一个namenode,所以用fs.default.name,不采用fs.defalutFs
发生错误的时候,查看日志
cd /usr/local/hadoop/logs
ls
哪个节点不在,看对应的日志文件
比如没有namenode的存在
vim hadoop-hadoop-namenode-Master.log
按 shift+G,到日志的最后一行,然后,找出现ERROR的地方
比如我就遇到
Problem binding to [Master:9000] java.net.BindException: Cannot assign requested address;
主要是因为易错点提醒2中
参考文献
http://dblab.xmu.edu.cn/blog/install-hadoop/
http://dblab.xmu.edu.cn/blog/install-hadoop-cluster/
https://zhuanlan.zhihu.com/p/59805371
终于写完了!!!
上一篇: CTF show STEGA系列