Hadoop的完全分布式的安装
完全分布式的安装分为六大部分
在安装之前你需要准备Java的安装包以及Hadoop的安装包,这里推荐去[hadoop]以及Java的下载路径,然后安装centos7的图形化界面,然后使用xshell或者ftp或者MobaXterm_Portable_v22.2上传到自己的安装路径下,不会上传的自己去csdn里搜索相关的教程,这里不做过多的讲解,网上的讲解比我更全面,下面开始对Hadoop的安装,
修改修静止的IP地址
其中主要有关闭防火墙,修改IP,在修改在前先切换为root用户,先输入su root,然后输入自己的root用户的密码,
- 关闭防火墙
查看防火墙的状态
systemctl status firewalld
关闭防火墙
systemctl stop firewalld
永久关闭防火墙
systemctl disable firewalld
2.修改静态IP地址
安装vim 编辑器,
yum install -y vim
进入修改IP地址的配置文件,
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33 #有的电脑是ifcfg-ens32,不确定的可输入ll进行查看
进入之后将BOOTPROTO="dhcp"改为BOOTPROTO=“static”,(将动态IP改为静态的IP),
打开虚拟网络编辑器,在vmware 中: 编辑——虚拟网络编辑器——NAT模式——NAT设置,查看自己IP,然后在ifcfg-ens33文件末尾增加四行数据,
IPADDR="192.168.183.20" # 设置的静态IP地址,前三位必须与自己的虚拟网络编辑器的IP一样
NETMASK="255.255.255.0" # 子网掩码
GATEWAY="192.168.183.2" # 网关地址,全部都要与自己的虚拟网络编辑器的一样
DNS1="192.168.183.2" #DNS服务器也可以将后面的数字改为8.8.8.8或者1.2.4.8
然后进行保存退出,重启网络,
systemctl restart network
重启之后,ping www.baidu.com,查看是否修改成功,
安装Java和Hadoop
(1)先卸载系统自带的Java,自己去网上找教程,
(2)在usr目录下新建一个文件夹java,用来存放上传的压缩包,使用xshell上传Java和Hadoop的压缩包到java文件夹下,然后进行解压,(是先创建文件夹在进行压缩包的上传)
cd /usr #进入usr目录
mkdir java #新建java文件夹然后上传自己的压缩包
cd java #进入java文件夹
ll #查看上传的压缩包
tar -zxvf jdk-8u291-linux-x64.tar.gz #解压jdk
tar -zxvf hadoop-3.1.3.tar.gz #解压Hadoop
(3)配置JDK和Hadoop的环境变量
vim /etc/profile #打开文件
//文件末尾加上
//java 的啊环境变量的配置
export JAVA_HOME=/usr/java/jdk1.8.0_164 #这里是自己的Java安装路径
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#Hadoop的环境变量的配置
export HADOOP_HOME=/usr/java/hadoop-3.1.3 #此处是自己的Hadoop的安装路径
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
让文件生效
source /etc/profile
检查Java和Hadoop是否安装成功
java -version
//显示以下内容成功
java version “1.8.0_164”
Java™ SE Runtime Environment (build 1.8.0_164-b10)
Java HotSpot™ 64-Bit Server VM (build 25.164-b10, mixed mode)
hadoop version
//显示以下内容等
Hadoop 3.1.3
Subversion https://shv@git-wip-us.apache.org/repos/asf/hadoop.git -r …
克隆完整的虚拟机
1.克隆之前先关闭虚拟机,在这里克隆两台足够,在VMware中:右键虚拟机-管理-克隆,
2.把每台的文件都修改一下:IP地址依次为192.168.183.20、192.168.183.30, 192.168.40.
vim /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network #重启网络服务:
3.修改主机名,三台都要,
hostnamectl set-hostname master #master是主机名,其余的可改为node1 和node2
reboot #重启只有重启过后主机名才会生效
4.修改hosts文件,在主节点映射IP地址和主机名(或者vim /etc/hosts节点添加IP地址,同master节点一样的操作,三台都要,)
vim /etc/hosts
//在文件最后加上:
主节点IP地址+ master 例:192.168.183.20 master
从一节点IP+ node1 例:192.168.183.30 node1
//从二节点IP+ slave2
5.将配置好的hosts文件发送给两个从节点之前,保证node1和node2 是在运行的
scp /etc/hosts node1:/etc/hosts
scp /etc/hosts node2:/etc/hosts
进行免密登录
1.分别在master,node1、node2,主机上生成公钥/私钥密钥对,然后将公钥发送给集群内的所有主机。首先在master主机生成密钥对。键入上面一条命令后连续回车,系统会自动在~/.ssh目录下生成公钥(id_rsa.pub)和私钥(id_rsa),
ssh-keygen -t rsa
ls ~/.ssh #查看公钥(id_rsa.pub)和私钥(id_rsa),
2.将master公钥id_rsa.pub复制到master,node1、node2主机上。
ssh-copy-id -i ~/.ssh/id_rsa.pub master
ssh-copy-id -i ~/.ssh/id_rsa.pub node1
ssh-copy-id -i ~/.ssh/id_rsa.pub node2
**注意*然后以同样的方法在node1和node2 两台主机上分别进行免密登录,
设置Hadoop配置文件
1.进入Hadoop的目录
cd /usr/java/hadoop-3.1.3
cd etc
cd hadoop
2.配置hadoop-env.sh,mapred-env.sh,和yarn-env.sh文件
# 分别进入文件,在首行添加Java路径,这里以自己路径为主
export JAVA_HOME=/usr/java/jdk1.8.0_164
3.配置core-site.xml文件
vim core-site.xml #进入文件
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/java/hadoop-3.1.3/data/tmp</value>
</property>
4.配置hdfs-site.xml文件
vim hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/java/hadoop-3.1.3/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/java/hadoop-3.1.3/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
5.配置 mapred-site.xml文件
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
<property></property>
6.配置yarn-site.xml文件
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8080</value>
</property>
7.进入Hadoop文件的etc/hadoop,修改workers
cd /usr/java/hadoop-3.1.3
cd etc
cd hadoop
ll #查看是否有workers文件
vim workers
//将里面的内替换为三台主机的IP+主机名
主节点IP地址+ master 例:192.168.183.20 master
从一节点IP+ slave1 例:192.168.183.30 node1
//从二节点IP+ slave2
8.将配置好的文件直接传到分节点
scp -r /usr/java/hadoop-3.1.3 root@node1:/usr/java
scp -r /usr/java/hadoop-3.1.3 root@node2:/usr/java
初始化节点并启动
hdfs namenode -format #初始化
start-all.sh #启动Hadoop
jps #查看进程
错误提示
//解决 Hadoop 启动 ERROR: Attempting to operate on hdfs namenode as root 的方法
Starting namenodes on [hadoop]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [hadoop]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
2018-07-16 05:45:04,628 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
解决问题
vim /etc/profile
#在文件末尾添加
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
source /etc/profile
再次启动及查看
start-all.sh
jps