最近在上大数据选修课,课程实验需要在CentOS上安装Hadoop和zookeeper,遇到了很多问题,记录一下。(原本准备从头写个完整的安装记录的,发现我实在是不想回头看一遍了,就记录一些需要注意的地方吧)
安装过程按照书上面来基本没有什么问题,需要注意的地方是:
选择启用网络和最小安装,还有设置root密码
(最小安装时没有图形界面,不过咱们也用不上)
启动系统后输入ifconfig没找到命令
输入yum install net-tools
,根据提示输入y
就安装完成了,注意安装软件得先切换为root用户。
这时可以输入ifconfig
来查看IP地址和网卡名
上面eth0
和192.168.153.101
是我修改好的,刚刚装好的网卡应该是ensxx
,比如我的是ens33
,修改步骤看下面。
经过ifconfig
得到IP地址后我们就可以用ssh来操作了,这样复制粘贴都还方便点。ssh连接的软件有很多,个人觉得Mobaxterm挺不错的。
新建Session,填入IP地址和root,双击左边侧栏出现的选项就可以连接
左侧是目录,方便我们找到文件路径,也可以进行一些文件上传的操作(后面上传hadoop、jdk和zookeeper都可以在这里搞)
刚装好的CentOS7,网卡名称不是书上面说的eth0,所以很多同学改了ifcfg-eth0
发现没用效果,所以我们要进行一些修改
root
用户下,输入vi /etc/sysconfig/grub
,添加这两个参数,net.ifnames=0 biosdevname=0
。如图::wq
保存退出。grub2-mkconfig -o /boot/grub2/grub.cfg
,如图/etc/sysconfig/network-scripts/
下的文件ifcfg-ens33
,你的可能是别的名称(跟ifconfig上面显示的一样)。mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eth0
vi /etc/sysconfig/network-scripts/ifcfg-eth0
PROXY_METHOD="none"
BROWSER_ONLY="no"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
UUID="9f7ed09b-c21b-43e2-b089-688effe1d1fa"
HWADDR=00:0C:29:7E:73:B9
DEVICE="eth0"
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.153.101
NETMASK=255.255.255.0
GATEWAY=192.168.153.2
DNS1=192.168.153.2
这里的HWADDR修改为你实际的值,通过ip addr
查看
后面复制出5台虚拟机后,也要修改这里的HWADDR
为实际值,还有DEVICE="eth0"
和NAME="eth0"
也是要改的(eth1、eth2…)
修改完注意要重启虚拟机
CentOS7关闭防火墙的方式跟书上不一样
停止防火墙:systemctl stop firewalld
开机禁用防火墙:systemctl disable firewalld
查看防火墙状态:systemctl status firewalld
zookeeper启动后执行jps
后发现没有QuorumPeerMain
,可能是装的版本缺少了jar文件,也有可能是前面hadoop配置文件写错了,可以查看输出日志(就是那个xxx.out文件)
这里的主机名和hadoop文件路径可能有些人的不一样,要改成自己的
<configuration>
<property>
<name>dfs.replicationname>
<value>3value>
property>
<property>
<name>dfs.nameservicesname>
<value>myclustervalue>
property>
<property>
<name>dfs.ha.namenodes.myclustername>
<value>nn1,nn2value>
property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1name>
<value>HAMaster001:9000value>
property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2name>
<value>HAMaster002:9000value>
property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1name>
<value>HAMaster001:50070value>
property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2name>
<value>HAMaster002:50070value>
property>
<property>
<name>dfs.namenode.shared.edits.dirname>
<value>qjournal://HASlave001:8485;HASlave002:8485;HASlave003:8485/QJClustervalue>
property>
<property>
<name>dfs.journalnode.edits.dirname>
<value>/home/hadoop/software/hadoop-2.9.2/QJEditsDatavalue>
property>
<property>
<name>dfs.ha.automatic-failover.enabledname>
<value>truevalue>
property>
<property>
<name>dfs.client.failover.proxy.provider.myclustername>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvidervalue>
property>
<property>
<name>dfs.ha.fencing.methodsname>
<value>
sshfence
shell(/home/hadoop/software/hadoop-2.9.2/ensure.sh)
value>
property>
<property>
<name>dfs.ha.fencing.ssh.private-key-filesname>
<value>/home/hadoop/.ssh/id_rsavalue>
property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeoutname>
<value>30000value>
property>
configuration>
<configuration>
<property>
<name>ha.zookeeper.quorumname>
<value>HASlave001:2181,HASlave002:2181,HASlave003:2181value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/home/hadoop/software/hadoop-2.9.2/tmpvalue>
property>
<property>
<name>fs.defaultFSname>
<value>hdfs://myclustervalue>
property>
<property>
<name>ipc.client.connect.retry.intervalname>
<value>10000value>
property>
<property>
<name>ipc.client.connect.max.retriesname>
<value>100value>
property>
configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.resourcemanager.ha.enabledname>
<value>truevalue>
property>
<property>
<name>yarn.resourcemanager.cluster-idname>
<value>RMHAvalue>
property>
<property>
<name>yarn.resourcemanager.ha.rm-idsname>
<value>rm1,rm2value>
property>
<property>
<name>yarn.resourcemanager.hostname.rm1name>
<value>HAMaster001value>
property>
<property>
<name>yarn.resourcemanager.hostname.rm2name>
<value>HAMaster002value>
property>
<property>
<name>yarn.resourcemanager.zk-addressname>
<value>HASlave001:2181,HASlave002:2181,HASlave003:2181value>
property>
configuration>
~/software/zookeeper-3.4.14/bin/zkServer.sh start
start-dfs.sh
start-yarn.sh
在任意一台Master执行hdfs zkfc -formatZK
,然后重新执行start-dfs.sh
有些同学可能不习惯纯命令行的操作,也不习惯用vi或者vim来编辑文本,那就可以试试VSCode的Remote Development,可以直接用vscode来编辑文本,上传文件也可以直接拖进来。如图: