@[TOC](完全分布式搭建过程)
准备工作:安装好三台虚拟机(node01,node02,node03),hadoop安装包,zookeeper安装包,jdk安装包
首先:进入虚拟机的root用户(su root) 在三台虚拟机上完成这些配置:
1:网络配置(ifcfg-ens33)
vi /etc/sysconfig/network-scripts/ifcfg-ens33
进入设置ip地址,修改配置文件
填入VM生成好的网关地址:
2:主机名配置 (hostname)
vi /etc/hostname
第一台设置为node01 第二台为node02,第三台为node03(取名可以自己取,这样是方便记忆)
3:配置域名的映射
vi /etc/hosts
4:关闭防火墙
永久关闭的命令:systemctl disable firewalld
临时关闭的命令:systemctl stop firewalld
查看防火墙状态:systemctl status firewalld(如果没有关闭就会显示running关闭就是dead):
5:关闭selinux
vi /etc/selinux/config
将SELINUX的值设置为disabled:
6:安装JDK 写好路径。三台同步
先创建好java文件夹
创建命令:mkdir /usr/local/java
查看文件夹是否创建好:先进入local目录中,在用ls命令来查看是否有java文件夹
创建好之后就可以通过rz命令和scp命令从系统中将安装包移动到虚拟机中
这里演示scp命令(因为有的电脑可能虚拟机中rz命令不可以用)
将传入的压缩包解压
命令:tar -xzvf jdk-8u261-linux-x64.tar.gz
然后将名字改为jdk1.8
命令:mv jdk1.8.0_261 jdk1.8
添加环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib /tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
刷新环境变量命令:source /etc/profile
验证是否安装成功命令:java -version
将jdk同步到第二台和第三台机器
scp -r jdk1.8 node02:/usr/local/java
scp -r jdk1.8 node03:/usr/local/java
然后像node01一样添加环境变量
7:安装配置zookeeper
使用rz或者scp方式把安装包上传到/opt目录下,并进行解压
进入zookeeper文件,在里面创建一个data目录,目录data用来存放ZK数据,此路径需要在coo.cfg配置文件里面使用
创建data目录的命令:mkdir data
进入到conf目录下找到zoo_sample.cfg文件,拷贝模板文件为zoo.cfg
命令为:cp zoo_sample.cfg zoo.cfg
修改配置zoo.cfg文件
zoo.cfg配置文件中找到dataDir选项,修改成之前创建的data目录.然后在zoo.cfg添加主机相关配置服务节点的信息,主机编号为简单起见一般会用 1、2、3 这样的方式来命名。
在/opt/data目录下创建myid文件
当前主机是node01,只需要配置1即可
然后用scp命令同步到第二台和第三台,然后修改node02和node03的myid配置即可
最后进入ZK的bin目录下面,执行./zkServer.sh start即可以启动
8:配置免密通道
三台机器分别⽣成各⾃的公钥、私钥
ssh-keygen -t rsa
输⼊命令后直接三个回车
然后拷贝三台机器的密钥到第一台机器
ssh-copy-id node01
配置好后用cat /root/.ssh/authorized_keys可以查看到三台机器的密钥
最后复制node01的认证到其他机器
在node01上执⾏命令:(这里的node02和node03可以写为你自己的ip地址,如192.168.80.120)。
scp /root/.ssh/authorized_keys node02:/root/.ssh
scp /root/.ssh/authorized_keys node03:/root/.ssh
然后以node01为例:在node01上完成hadoop配置,然后在将配置好的内容scp到node02和node03上面。(在开始配置前,检查以上配置是否完成,然后清理和关掉-之前的虚拟机上的HDFS服务(zookeeper,hdfs)
1.先安装好Hadoop
创建安装目录
cd /usr/local/
mkdir hadoop
cd hadoop/ mkdir
hdfs cd hdfs/
mkdir data
mkdir name
mkdir tmp
然后上传安装包到hadoop目录并解压
配置HDOOP_HOME环境变量(vi /etc/profile)
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.9.2
export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
检查是否安装好(hadoop version)
2:修改配置文件:(以下文件都在目录/usr/local/hadoop/hadoop-2.9.2/etc/hadoop中 )
cd /usr/local/hadoop/hadoop-2.9.2/etc/hadoop
1.hadoop-env.sh
vi hadoop-env.sh
export JAVA_HOME=/usr/local/java/jdk1.8
export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.9.2/etc/hadoop
2.yarn-env.sh
vi yarn-env.sh
3. core-site.xml
vi core-site.xml
fs.defaultFS表示指定集群的文件系统类型是分布式文件系统,datanode心跳发送到namenode的地址
fs.defaultFS hdfs://node01:9000 hadoop.tmp.dir /usr/local/hadoop/hadoop-2.9.2/tmp
4.hdfs-site.xml
vi hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name> <value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.datanode.max.locked.memory</name> <value>65536</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
dfs.replication修改为3,三副本策略,表示副本数是三 dfs.permissions配置添加值false,表示不开启文件权限
5.mapred-site.xml (需要把marpred-site.xml.template拷贝成mapred-site.xml文件进行配置
vi mapred-site.xml
mapreduce.framework.name指定资源分配使用yarn
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
6.yarn-site.xml
vi yarn-site.xml
yarn.resourcemanager.hostname.yarn相关资源服务器的主机名,使用node01
yarn.nodemanager.aux-services和MapReduce计算相关
yarn.nodemanager.vmem-Check-enabled 关闭虚拟内存检查
yarn.resourcemanager.hostname node01
yarn.nodemanager.aux-services mapreduce_shuffle
yarn.nodemanager.vmem-check-enabled false
7. slaves(配置三台主机名,此配置表示三台机器都作为DataNode)
vi slaves
8.同步配置信息,把node01上的配置同步到node02和node03,使用scp进行同步
scp -r /usr/local/hadoop root@node02:/usr/local/
scp -r /usr/local/hadoop root@node03:/usr/local/
最后启动集群:
1.在node01上格式化
使用命令:hdfs namenode -format
2.启动集群,不需要三台机器都启动,只需要在node01上启动
使用启动命令:start-all.sh
用jps命令查看node01是否有五个进程
node02和node03是否有两个进程
最后在node02和node03上面像node01一样配置HDOOP_HOME环境变量(vi /etc/profile)
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.9.2
export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
(在上文中你可能会看见node05和node06,那是因为我的主机名叫node05,node06,node07。大家按照node01,node02,node03配置就好)
希望大家学习愉快!!^ ~ ^