本实验最终的结果是使用四台虚拟机,搭建hadoop集群。我们采用先配置一台,然后,剩下的三台直接克隆虚拟机,然后稍微修改配置就好了。
192.168.149.161 | namenode/ resourcemanager/secondarynamenode |
---|---|
192.168.149.162 | datanode/nodemanager |
192.168.149.163 | datanode/nodemanager |
192.168.149.164 | datanode/nodemanager |
我当时创建的虚拟机采用的网络连接方式是NAT模式,这样比较适合与外网连接。如果当时选的不是NAT的话,也可以修改。
找到虚拟机的设置选项
在这里更改之后,点击确定就好。
下面说说具体配置固定ip:
记录好这些内容,当然这些参数大部分是可以修改。但是为了不必要的麻烦(因为懒),我们就不修改了。
2. 进入虚拟机,修改配置
后续步要在root用户下进行
找到这个文件进行修改,最后的“ens”可能不同,去目录中看一下就知道
ipaddr是你要固定的ip
netmask是子网掩码
gateway是网关
service network restart
tar -zxvf jdk-8u241-linux-x64.tar.gz /opt/soft/jdk
记住自己解压的位置,我是习惯于把软件安装到/opt/soft文件夹下,新建一个jdk目录
vi /etc/profile
将光标移动到末尾,输入以下内容
#java environment
export JAVA_HOME=/opt/soft/jdk/jdk1.8.0_241
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 -verison
vi ~/.bashrc
export JAVA_HOME=/opt/soft/jdk/jdk1.8.0_241
export PATH=$JAVA_HOME/bin:$PATH
source ~/.bashrc
systemctl stastus fiewalld.service #查看防火墙状态
systemctl stop fiewalld.service #临时关闭防火墙
systemctl disable fiewalld.service #禁止开机自启动
systemctl start fiewalld.service #打开防火墙
systemctl enable fiewalld.service #打开开机启动
这里我们只要用到前三个命令。
hostnamectl set-hostname s161
getenforce #查看状态
setenforce 0 #临时关闭
setenforce 1 #临时打开
要永久关闭,需要修改/etc/sysconfig/selinux
文件
已经关闭。
4. 配置节点的域名解析
vi /etc/hosts
在后面添加,四个节点的ip和主机名,这里我们暂时只有一台虚拟机,这是预准备。
tar -zxvf hadoop-2.9.1.tar.gz
vi /etc/profile
# HADOOP_HOME
export HADOOP_HOME=/opt/soft/hadoop/hadoop-2.9.1
export HADOOP_CONF_FILE=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
vi ~/.bansrc
export JAVA_HOME=/opt/soft/jdk/jdk1.8.0_241
export HADOOP_PREFIX=/opt/soft/hadoop/hadoop-2.9.1
export PATH=$JAVA_HOME/bin:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin:$PATH
注意:这里是在原来jdk的基础上修改的,即这里是jdk+hadoop的内容,不只是hadoop。
最后再使配置文件生效source ~/.bashrc
5. 检查配置
hadoop version
进入${HADOOP_HOME}/etc/hadoop目录下
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://s161:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/soft/hadoop/hadoop_data/tmp</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/soft/hadoop/hadoop_data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/soft/hadoop/hadoop_data/datanode</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
cp mapred-site.xml.template mapred-site.xml
这就是把mapred-site.xml.template文件在当前文件夹中复制一份并命名为mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>s161:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>s161:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>s161:8031</value>
</property>
</configuration>
s162
s163
s164
这里写的是从节点的主机名
export JAVA_HOME=/opt/soft/jdk/jdk1.8.0_241
这一步没啥好说的,复制粘贴就完事了。记得先关闭虚拟机再复制。
hostnamrctl set-hostname xxx
来修改主机名vi /etc/sysconfig/network-scripts/ifcfg-ens33
改变其中的ip信息
使用:service network restart
重启网络服务,最后再ping一下baidu,试一下网络是否是连通的。
3.注意!!!
这里修改的信息,要与之前在/etc/hosts文件中的内容相符。
vi /etc/ssh/sshd_config
将下面部分前面的注释“#”去掉
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
这是开启ssh密钥认证。
ssh-keygen -t rsa
连续敲回车就行
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
连接其他机器,将他们的密钥也写入认证文件
ssh root@s162 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
cat ~/.ssh/authorized_keys
vi ~/.ssh/known_hosts
这里我们可以看到没有s161机器的内容,我们连接一下s161机器
ssh s161
因为这里是主机连接本身,所以之后的用户名和主机名不会有变化,可以输入命令:exit退出连接。再查看一下known_hosts文件
ok了,已经包含全部的四台机器了。
scp ~/.ssh/authorized_keys root@s162:~/.ssh/authorized_keys
这里是由于第一次连接还要输入密码。scp命令常用于传输文件。
ssh s163
在s161节点中输入命令
可以尝试连接所有机器,全部验证一遍。
cd /opt/soft/hadoop/hadoop-2.9.1/etc/hadoop/
hdfs namenode -format
start-dfs.sh
start-yarn.sh
stop-dfs.sh
stop-yarn.sh
在不适用,或者其他情况下尽量关闭节点。
4. 注意
如果之前有配置错的,重新配置后想要重新格式化,要先删除格式化创建的目录,否则可能会造成datanode进程无法启动的状况。
因为我之前装的是没有GUI的centos系统,所以先安装图形界面