目录
- Centos7下Hadoop完全分布式安装
- 第一步:安装文件
- 第二步:免密登录配置
- (1)vim 的安装
- (2)host配置
- (3)关闭防火墙
- (4)实现免密登陆
- (5)安装NTP时间同步服务
- 第三步:配置环境变量
- 第四步:设置Hadoop配置文件
- (1)配置hadoop-env.sh文件
- (2)配置core-site.xml文件
- (3)配置hdfs-site.xml文件
- (4)配置mapred-site.xml文件
- (5)配置yarn-site.xml文件
- (6)修改 slaves 文件
- 第五步:分发配置到 node2、node3 虚拟机
- 第六步:运行Hadoop及测试
Centos7下Hadoop完全分布式安装
- 电脑系统:macOS 10.15.4
- 虚拟机软件:Parallels Desktop14
- Hadoop各节点节点操作系统:CentOS 7
- JDK版本:jdk1.8.0_162
- Hadoop版本:hadoop-2.7.7
第一步:安装文件
准备好工具,虚拟机,3个centos,jdk安装包,Hadoop安装包
先在centos中的/opt/目录下新建一个文件夹Hadoop
然后上传Hadoop 和jdk
上传方式:
scp 本机的文件绝对路径 caizhengjie@10.211.55.49:/opt/Hadoop
解压文件:
tar -zxvf jdk-8u162-linux-x64.tar.gz
tar -zxvf hadoop-2.7.7.tar.gz
创建软连接:
ln -s hadoop-2.7.7 hadoop
ln -s jdk1.8.0_162 jdk
第二步:免密登录配置
(1)vim 的安装
如果centos没有安装好vim,需要安装vim
yum install vim -y
(2)host配置
开启虚拟机,host配置文件在根目录下的 etc 文件夹下,给三台虚拟机均进行配置。
注意,下面的host配置,一定要根据自己的主机名和ip进行配置,三台主机的配置均一样。在根目录下输入
sudo vim /etc/hosts
在每一台文件末尾添加以下内容
10.211.55.59 node1
10.211.55.60 node2
10.211.55.61 node3
(3)关闭防火墙
每一台服务器都要关闭防火强
- 查看防火墙状态
firewall-cmd --state
- 停止防火墙
systemctl stop firewalld.service
- 禁止防火墙开机启动
systemctl disable firewalld.service
- 关闭selinux
sudo vim /etc/selinux/config
注释掉 SELINUX=enforcing ,添加如下内容:
SELINUX=disabled
也可以直接将enforcing修改为disabled。
(4)实现免密登陆
配置每一台服务器本身公钥和免密:
首先进入
cd ~/.ssh
如果里面有文件的话,将其删除至空文件
rm -f *
在node1上生成公钥和密钥
ssh-keygen -t rsa
然后按三下回车
然后需要将公钥发送给node1、node2、node3上
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
最后检验:
ssh node1
ssh node2
ssh node3
(5)安装NTP时间同步服务
三台虚拟机都要安装,需要进入root权限下:
sudo -i
- 安装ntp
yum install -y ntp
- 设置NTP服务开机启动
chkconfig ntpd on
- 查看ntp进程是否启动
ps aux | grep ntp
显示:
root 12650 0.0 0.0 112728 968 pts/0 S+ 11:56 0:00 grep --color=auto ntp
第三步:配置环境变量
配置jdk、Hadoop环境变量:
sudo vim ~/.bashrc
在文件末尾添加如下代码
export JAVA_HOME=/opt/Hadoop/jdk1.8.0_162
export CLASSPATH=${JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export HADOOP_HOME=/opt/Hadoop/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
上面这个地方根据自己的实际要求填写
保存并退出
是设置生效:
source ~/.bashrc
检验java -version和whereis hdfs
能输出Java版本号的即为配置环境变量成功
第四步:设置Hadoop配置文件
在node1进行文件配置
进入hadoop目录
cd /opt/Hadoop/hadoop-2.7.7/etc/hadoop
(1)配置hadoop-env.sh文件
设置hadoop-env.sh文件
vim hadoop-env.sh
找到export JAVA_HOME,修改如下:
export JAVE_HOME=/opt/Hadoop/jdk1.8.0_162
(2)配置core-site.xml文件
vim core-site.xml
修改core-site.xml文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/Hadoop/hadoop-2.7.7/tmp</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>caizhengjie</value>
</property>
</configuration>
(3)配置hdfs-site.xml文件
vim hdfs-site.xml
修改hdfs-site.xml文件
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
(4)配置mapred-site.xml文件
将 mapred-site.xml.template 复制为文件名是 mapred-site.xml 的文件
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
修改mapred-site.xml文件
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
如果在测试mapreduce出现问题,请见这篇文章
(5)配置yarn-site.xml文件
vim yarn-site.xml
修改yarn-site.xml文件
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
(6)修改 slaves 文件
这是分配datanode,如果想配置三台datanode则需要在slaves文件里添加三台主机名
将原有的内容删去,加以上内容:
node1
node2
node3
或者
node2
node3
这里会出现一个问题:当重新启动服务的时候,会出现“卡住不动的情况”,这种情况千万不要ctrl+c给停止掉,这是让你输入node1的密码,因为字比较小我经常会忽略掉,以为是个报错,其实不是报错,是想让你输入密码而已!这个坑我卡了三天!
第五步:分发配置到 node2、node3 虚拟机
- 方案一:如果第一步上传文件只上传在node1中,node2,node3没有上传,则可以将整个Hadoop文件传给node2,node3。但是,上传完之后需要在node2,node3中配置环境变量。
scp -r Hadoop caizhengjie@node2:/opt/
scp -r Hadoop caizhengjie@node3:/opt/
- 方案二:如果在node2,node3中均已上传文件并配置好环境变量,则只需要将 hadoop/etc目录下的 hadoop 文件夹分发给另外两台虚拟机
scp -r hadoop caizhengjie@node2:/opt/Hadoop/hadoop-2.7.7/etc/hadoop
scp -r hadoop caizhengjie@node3:/opt/Hadoop/hadoop-2.7.7/etc/hadoop
第六步:运行Hadoop及测试
在运行初次运行hadoop之前,需要在 node1 格式化 hdfs
hdfs namenode -format
- 启动HDFS:
start-dfs.sh
- 启动YARN:
start-yarn.sh
- 启动all:
start-all.sh
- 关闭Hadoop服务:stop-all.sh
检验Hadoop进程:jps
node1中出现:
[caizhengjie@node1 ~]$ jps
28304 Jps
17060 ResourceManager
15654 NameNode
16008 DataNode
16649 SecondaryNameNode
17245 NodeManager
node2中出现:
[caizhengjie@node2 ~]$ jps
2370 Jps
2133 DataNode
2247 NodeManager
node3中出现:
[caizhengjie@node3 ~]$ jps
2144 DataNode
2257 NodeManager
2403 Jps
访问网页: