CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)
Hadoop安装教程
1、准备工作
1.1 安装三台CentOS7虚拟机
hadoop-1是namenode,hadoop-2和hadoop-3都是datanode
使用:ip adrr
查看并记住三台虚拟机所对应IP
1.2 修改主机名(root 权限 操作三台)
[aaa@qq.com ~]# hostname #查看当前的 hostnmae
localhost
[aaa@qq.com ~]# hostnamectl set-hostname hadoop-1 #永久修改hostname(立即生效)
[aaa@qq.com ~]# hostname # 检查修改
hadoop-1
其余两台以同样方式分别将主机名修改为:hadoop-2、hadoop-3
1.3 修改HOSTS(root权限 操作三台)
修改HOSTS的原因主要有两点:
1.Hadoop 内部机制需要通过主机名对主机进行访问。
2.使用主机名对 Hadoop 集群进行配置,看起来更加一目了然。
在CentOS7中修改HOSTS 操作命令如下:
[aaa@qq.com ~]# vi /etc/hosts
#在文件中添加集群所有主机的IP和主机名的对应关系,IP 与主机名之间使用一个 TAB 键分隔
192.168.80.132 hadoop-1
192.168.80.133 hadoop-2
192.168.80.134 hadoop-3
1.4 关闭防火墙(root权限 操作三台)
Centos7 中使用 systemctl 命令来管理服务,命令如下:
[aaa@qq.com ~]# firewall-cmd --state #查看状态
[aaa@qq.com ~]# systemctl disable firewalld # 永久关闭防火墙(重启生效)
[aaa@qq.com ~]# systemctl stop firewalld # 临时关闭防火墙(立即生效)
1.5 同步时间(root权限 操作三台)
CentOS7 网络同步时间命令如下:
yum install ntpdate #安装过程中,需要按提示输入两次Y或yes
ntpdate cn.pool.ntp.org #安装完毕后,执行该语句同步时间
1.6 配置SSH免密登录(root权限 操作三台)
给三台虚拟机生成**
以hadoop-1为例,执行命令,生成空字符串的秘钥(后面要使用公钥),命令是:
ssh-****** -t rsa #安装过程中需要按四次Enter键
将公钥拷贝到要免密登录的目标机器上
在hadoop-1上执行以下命令:
ssh-copy-id hadoop-2
ssh-copy-id hadoop-3
在hadoop-2上执行以下命令:
ssh-copy-id hadoop-1
ssh-copy-id hadoop-3
在hadoop-3上执行以下命令:
ssh-copy-id hadoop-1
ssh-copy-id hadoop-2
测试免密登陆
在hadoop-2服务器执行命令
ssh hadoop-1
可以看到在没有输入密码的情况下从服务器hadoop-2成功登录到hadoop-1服务器,此时就可以在hadoop-2服务器操作hadoop-1服务器。三台机器互相ssh一下,第一次登录需要输入yes,之后就不需要了。出现上图表示成功。测试能连接后不要忘记执行 exit 退出登录
2、JDK环境安装(操作三台)
2.1 下载JDK
下载网址:JDK下载网址
选择图中红框版本
2.2 将JDK文件上传到Linux服务器上
这里使用root账号登录,安装到/usr/local/java目录下。上传及新建文件夹推荐使用XShell+Xftp
2.2 执行解压命令
cd /usr/local/java/
tar -zxvf jdk-8u261-linux-x64.tar.gz
2.3 配置环境变量
vi /etc/profile
在末尾加上:
JAVA_HOME=/usr/local/java/jdk1.8.0_261(这里 JAVA_HOME=你自己的jdk路径)
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
然后执行 source /etc/profile 命令使修改的配置文件生效。
2.4 测试
执行命令:
javac或者java -version
出现下图代表JDK安装成功
3、Hadoop安装
3.1 Hadoop下载
这里选择的版本是3.2.0
Hadoop3.2.0下载
3.2 将Hadoop文件上传到Linux服务器上
在opt目录下新建一个名为hadoop的目录,并将下载得到的hadoop-3.2.0.tar上载到该目录下
3.2 解压安装
tar -xvf hadoop-3.2.0.tar.gz
3.3 配置Hadoop环境变量
vi /etc/profile
在末尾加上:
export HADOOP_HOME=/opt/hadoop/hadoop-3.2.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
然后执行 source /etc/profile 命令使修改的配置文件生效。
3.4 测试
执行命令:
hadoop version
4、Hadoop配置文件修改
4.1 新建几个目录
在/root目录下新建几个目录,以此复制粘贴执行下面的命令:
mkdir /root/hadoop
mkdir /root/hadoop/tmp
mkdir /root/hadoop/var
mkdir /root/hadoop/dfs
mkdir /root/hadoop/dfs/name
mkdir /root/hadoop/dfs/data
4.2 修改etc/hadoop中的一系列配置文件
修改core-site.xm
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/core-site.xml
在节点内加入配置:
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop-1:9000</value>
</property>
修改hadoop-env.sh
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/hadoop-env.sh
将 export JAVA_HOME=${JAVA_HOME}
修改为: export JAVA_HOME=/usr/local/java/jdk1.8.0_261
说明:修改为自己的JDK路径
修改hdfs-site.xml
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/hdfs-site.xml
在节点内加入配置::
<property>
<name>dfs.name.dir</name>
<value>/root/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>/root/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.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
<description>need not permissions</description>
</property>
新建并且修改mapred-site.xml
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/mapred-site.xml
在节点内加入配置:
<!-- 配置mapReduce在Yarn上运行(默认本地运行) -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
修改workers文件
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/workers
将里面的localhost删除,添加以下内容:
hadoop-1
hadoop-2
hadoop-3
修改yarn-site.xml文件
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/yarn-site.xml
在节点内加入配置
<property>
<description>指定YARN的老大(ResourceManager)的地址</description>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-1</value>
</property>
<!-- NodeManager上运行的附属服务。需要配置成mapreduce_shfffle,才可运行MapReduce程序默认值 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<discription>每个节点可用内存,单位MB,默认8182MB</discription>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
配置hadoop-3.2.0/sbin/目录下start-dfs.sh、start-yarn.sh、stop-dfs.sh、stop-yarn.sh文件
在start-dfs.sh、stop-dfs.sh开始第一行加上
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
在start-yarn.sh、stop-yarn.sh开始第一行加上
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
配置好后,将 hadoop-1上的 /opt/hadoop/hadoop-3.2.0 文件夹传递复制到从节点
scp -r /opt/hadoop/hadoop-3.2.0 aaa@qq.com-2:/opt/hadoop/
scp -r /opt/hadoop/hadoop-3.2.0 aaa@qq.com-3:/opt/hadoop/
scp /etc/profile aaa@qq.com-2:/etc/ #copy配置文件到各个节点
scp /etc/profile aaa@qq.com-3:/etc/
5、启动Hadoop
5.1 格式化namenode
因为hadoop-1是namenode,hadoop-2和hadoop-3都是datanode,所以只需要对hadoop-1进行初始化操作,也就是对hdfs进行格式化。
进入到hadoop-1这台机器/opt/hadoop/hadoop-3.2.0/bin目录:
cd /opt/hadoop/hadoop-3.2.0/bin
执行初始化脚本
./hadoop namenode -format
5.2 启动Hadoop
从hadoop-1开始,在三台分别运行:
start-all.sh
5.2 运行结果
hadoop-1是我们的namenode,该机器的IP是192.168.217.128,在本地电脑访问如下地址:
http://192.168.80.132:9870/
自动跳转到了overview页面
在本地浏览器里访问如下地址:
http://192.168.217.128:8088/
自动跳转到cluster页面
在hadoop-1中输入
jps
出现结果如图:
在hadoop-2中输入
jps
出现结果如图:
在hadoop-3中输入
jps
出现结果如图: