Centos7上搭建Hadoop3.1.1集群
分配IP
先在草稿纸上分配好IP和主机名,三台主机均能上外网,且均能互相ping通即可。
IP | 主机名 |
192.168.85.101 | node1 |
192.168.85.102 | node2 |
192.168.85.103 | node3 |
再将以上表格内的内容写入/etc/hosts中(每个都要写)
echo '192.168.85.101 node1' >>/etc/hosts
echo '192.168.85.102 node2' >>/etc/hosts
echo '192.168.85.103 node3' >>/etc/hosts
分别在对应IP的主机中修改主机名
在node1中
vi /etc/hostname
将hostname中的内容改为node1
然后执行reboot命令重启主机
在node2,node3中重复上述操作。
关闭防火墙
实验环境中关闭防火墙,防止后续查看web页面访问受阻。
systemctl stop firewalld #临时关闭
systemctl disable firewalld #禁止开机启动
配置ssh免密登陆
在所有虚拟机中分别执行
ssh-****** -t rsa
三次回车生成**
在node1中执行下述操作
生成认证的公钥key,再用下面的命令分发给各个节点
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
scp /root/.ssh/id_rsa.pub aaa@qq.com:/root/.ssh/authorized_keys
scp /root/.ssh/id rsa.pub aaa@qq.com:/root/.ssh/authorized_keys
再给所有虚报机上的authorized_keys添加权限
chmod 644 /root/.ssh/authorized_keys
即可完成node1到其他节点的免密登录
可用以下命令测试ssh免密登陆是否设置成功
ssh aaa@qq.com #不需输入密码即为成功
exit #退出ssh
安装JDK
创建java目录
mkdir -p /usr/local/java
下载jdk1.8版本,并将其解压到/usr/local/java目录下
tar -zxf jdk-8u65-linux-x64.tar.gz -C /usr/local/java/
配置环境变量
vi /etc/profile
#在配置文件的最后添加如下配置
#JAVA
JAVA_HOME=/usr/local/java/jdk1.8.0_65 #自己解压后的jdk目录名称
JRE_JOME=/usr/local/java/jdk1.8.0_65/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_JOME CLASS_PATH PATH
保存退出后,执行以下命令刷新环境变量
source /etc/profile
进行测试是否成功
java -version
安装hadoop3.1.1
下载hadoop3.1.11
从清华镜像网站https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/core/hadoop-3.1.1上下载hadoop3.1.1压缩包到本地
在node1主机上创建hadoop目录
mkdir -p /usr/local/hadoop
上传到node1主机上,并解压到/usr/local/hadoop目录下
tar -zxf hadoop-3.1.1.tar.gz -C /usr/local/hadoop/
配置环境变量
vi /etc/profile
#在配置文件最后一行添加如下配置
#HADOOP
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
运行如下命令刷新环境变量
source /etc/profile
进行测试是否成功
hadoop version
配置Hadoop3.1.1
创建目录
#在/usr/local/hadoop目录下创建目录
cd /usr/local/hadoop/
mkdir tmp
mkdir var
mkdir dfs
mkdir dfs/name
mkdir dfs/data
修改配置文件
进入hadoop的配置文件目录下
cd /usr/local/hadoop/hadoop-3.1.1/etc/hadoop
vi workers
删除localhost
添加从节点主机名,例如我这里是:
node2
node3
1) hadoop-env.sh
在# JAVA_HOME=/usr/java/testing hdfs dfs -ls一行下面添加如下代码
export JAVA_HOME=/usr/local/java/jdk1.8.0_65
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
以下配置在各个文件的<configuration></configuration>中添加
2)core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.85.101:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
3) hdfs-site.xml
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/dfs/name</value>
<description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/dfs/data</value>
<description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>10.0.0.51:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>10.0.0.51:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
<description>need not permissions</description>
</property>
4) yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
5) mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>node1:49001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/usr/local/hadoop/var</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
同步
使用scp命令将node1下的目录复制到各个从节点的相应位置上
scp -r /usr/local/java node2:/usr/local/java
scp -r /usr/local/hadoop node2:/usr/local/hadoop
scp -r /etc/profile node2:/etc/
scp -r /usr/local/java node3:/usr/local/java
scp -r /usr/local/hadoop node3:/usr/local/hadoop
scp -r /etc/profile node3:/etc/
在从节点上分别运行下述命令刷新环境变量
source /etc/profile
格式化节点
在node1中运行下述命令,格式化节点
hdfs namenode -format
运行之后不报错,并在倒数第五六行有successfully即为格式化节点成功
运行以下命令,启动hadoop集群的服务
start-all.sh
在node1上输入jps可以看到node1下的节点
在node2下的节点
在浏览器*问hdfs的web界面
在浏览器上输入http://192.168.85.101:8088(前者为主节点ip地址,后者为hdfs的web进程对应的端口号)
推荐阅读
-
Linux(Centos7)下redis5集群搭建和使用说明详解
-
.net core i上 K8S(一)集群搭建
-
Centos7上离线搭建PHP-7.2.26
-
Linux(Centos7)下redis5集群搭建和使用
-
Docker上实现Redis集群搭建
-
详解Xampp和wordpress在Centos7上的搭建与使用
-
在CentOS7上搭建Jenkins+Maven+Git持续集成环境的方法
-
Linux(Centos7)下redis5集群搭建和使用说明详解
-
CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)
-
kubernetes v1.5.2搭建,部署nginx,tomcat,三台centos7 集群,一篇秒懂kubernetes工具