本次搭建版本 为hadoop-3.3.0.
1、下载hadoop
创建hadoop文件夹
cd usr/
mkdir softInstall
cd softInstall/
mkdir hadoop
在hadoop文件夹下执行下载命令:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
注:如果wget命令不存在,则安装wget:yum install wget
要下载hadoop-3.3.0.tar.gz文件,不要下载hadoop-3.3.0-src.tar.gz 文件
解压下载好的hadoop文件
tar -zxvf hadoop-3.3.0.tar.gz
解压后的 hadoop-3.3.0文件位于当前目录
2、修改hadoop配置
进入hadoop文件夹:
cd hadoop-3.3.0/etc/hadoop/
编辑hadoop-env.sh文件:
vi hadoop-env.sh
export JAVA_HOME=usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64
export HADOOP_CONF_DIR=usr/softInstall/hadoop/hadoop-3.3.0/etc/hadoop
执行 source hadoop-env.sh 让配置立即生效
source hadoop-env.sh
修改 core-site.xml:
执行命令:
vim core-site.xml
<!--指定 主节点 (nameNode)ip-->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.3.7:9000</value>
</property>
</configuration>
<!--指定hadoop运行时产生的文件的目录-->
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/softInstall/hadoop/tpm</value>
</property>
</configuration>
配置hdfs-site.xml文件
执行:
vi etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.3.8:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/softInstall/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/softInstall/hadoop/dfs/data</value>
</property>
<!--设置datanode 副本数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件-->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!-- 不检查hadoop是否使用host+hostName的配置方式,否则要配置hostname -->
<property>
<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
<value>false</value>
</property>
</configuration>
配置yarn-site.xml
<configuration>
<!--NodeManager获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定yarn的老大 resoucemanager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.3.7</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!--忽略虚拟内存的检查,如果你是安装在虚拟机上,这个配置很有用,配上去之后后续操作不容易出问题。如果是实体机上,并且内存够多,可以将这个配置去掉。-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
配置mapred-site.xml
vi mapred-site.xml
<property>
<!-- 指定mapreduce运行在yarn上 -->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
修改worker文件(hadoop3.2版本没有slaves文件,之前版本修改slaves文件)
vi /usr/softInstall/hadoop/hadoop-3.3.0/etc/hadoop/workers
修改worker文件,将里面的localhost删除,添加自己 从节点的ip:
这里刚开始配置的是ip但后面出现了一个问题后来改为hostname的形式,并加了两个节点
刚开始
后改为
3、同步配置
通过 以下命令将 本机hadoop文件夹下的内容 全部copy到另外几台电脑上,减少安装和 配置时间
#将本主机的/usr/softInstall/hadoop目录copy到远程linux主机上/usr/softInstall的文件夹下面
scp -r /usr/softInstall/hadoop root@192.168.3.8:/usr/softInstall
scp -r /usr/softInstall/hadoop root@192.168.3.9:/usr/softInstall
scp -r /usr/softInstall/hadoop root@192.168.3.13:/usr/softInstall
4、配置 hadoop环境变量
vi /etc/profile
# hadoop 环境变量
export HADOOP_HOME=/usr/softInstall/hadoop/hadoop-3.3.0
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
5、启动hdfs
全部配置完成后,启动hdfs,首次启动需格式化hdfs,后面可以选择性格式化
hdfs namenode -format
启动
start-dfs.sh
报错
因为每台机器用的都是root用户,这里需要添加root用户
6、给 hadoop-env.sh该文加添加root用户
vi /usr/softInstall/hadoop/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export HDFS_NODEMANAGER_USER=root
给一下四个文件添加如下root用户
vi /usr/softInstall/hadoop/hadoop-3.3.0/sbin/start-all.sh
vi /usr/softInstall/hadoop/hadoop-3.3.0/sbin/stop-all.sh
vi /usr/softInstall/hadoop/hadoop-3.3.0/sbin/start-dfs.sh
vi /usr/softInstall/hadoop/hadoop-3.3.0/sbin/stop-dfs.sh
HADOOP_SECURE_DN_USER=hdfs
HDFS_DATANODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root
给如下两个 文件添加一下root
vi /usr/softInstall/hadoop/hadoop-3.3.0/sbin/start-yarn.sh
vi /usr/softInstall/hadoop/hadoop-3.3.0/sbin/stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
用复制的形式,将其它几台机器的文件 也设置root用户
#将本主机的/usr/softInstall/hadoop目录copy到远程linux主机上/usr/softInstall的文件夹下面
rm -rf /usr/softInstall/hadoop/hadoop-3.3.0/etc/hadoop
scp -r /usr/softInstall/hadoop/hadoop-3.3.0/etc/hadoop/ root@192.168.3.8:/usr/softInstall/hadoop/hadoop-3.3.0/etc/
scp -r /usr/softInstall/hadoop/hadoop-3.3.0/etc/hadoop/ root@192.168.3.9:/usr/softInstall/hadoop/hadoop-3.3.0/etc/
scp -r /usr/softInstall/hadoop/hadoop-3.3.0/etc/hadoop/ root@192.168.3.13:/usr/softInstall/hadoop/hadoop-3.3.0/etc/
scp -r /usr/softInstall/hadoop/hadoop-3.3.0/etc/hadoop/ root@192.168.3.11:/usr/softInstall/hadoop/hadoop-3.3.0/etc/
scp -r /usr/softInstall/hadoop/hadoop-3.3.0/etc/hadoop/ root@192.168.3.12:/usr/softInstall/hadoop/hadoop-3.3.0/etc/
rm -rf /usr/softInstall/hadoop/hadoop-3.3.0/sbin
scp -r /usr/softInstall/hadoop/hadoop-3.3.0/sbin/ root@192.168.3.8:/usr/softInstall/hadoop/hadoop-3.3.0/
scp -r /usr/softInstall/hadoop/hadoop-3.3.0/sbin/ root@192.168.3.9:/usr/softInstall/hadoop/hadoop-3.3.0/
scp -r /usr/softInstall/hadoop/hadoop-3.3.0/sbin/ root@192.168.3.13:/usr/softInstall/hadoop/hadoop-3.3.0/
scp -r /usr/softInstall/hadoop/hadoop-3.3.0/sbin/ root@192.168.3.11:/usr/softInstall/hadoop/hadoop-3.3.0/
scp -r /usr/softInstall/hadoop/hadoop-3.3.0/sbin/ root@192.168.3.12:/usr/softInstall/hadoop/hadoop-3.3.0/
7、启动
start-dfs.sh启动,再次发现问题,需要设置ssh免登录,主要是hadoop01(192.168.3.7)到其他节点的免登录
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.3.7
同样,对其他几个服务开启免登录
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.3.8
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.3.9
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.3.10
在每台 机器上都 执行 ssh-keygen -t rsa 生成秘钥
先执行 cd ~/.ssh 进入到.ssh目录下
再执行 ll 可查看生成的公钥id_rsa.pub,私钥id_rsa
ssh目录下执行 touch authorized_keys 创建存放秘钥的文件
然后执行 cp id_rsa.pub authorized_keys 将公钥放进authorized_keys文件,可无密登录本机
执行 chmod 644 authorized_keys 修改 authorized_keys 权限
执行 sudo service sshd restart 重启ssh服务
将公钥copy到其它几台机器上
scp /root/.ssh/authorized_keys root@192.168.3.8:/root/.ssh
scp /root/.ssh/authorized_keys root@192.168.3.9:/root/.ssh
scp /root/.ssh/authorized_keys root@192.168.3.13:/root/.ssh
scp /root/.ssh/authorized_keys root@192.168.3.11:/root/.ssh
scp /root/.ssh/authorized_keys root@192.168.3.12:/root/.ssh
每台机器都进行 chmod 644 authorized_keys 设置,最后在192.168.3.7上进行逐个ssh登陆测试,如ssh 192.168.3.8
8、重新格式化namenode,并重启
格式化namenode之前,要删除data、name、logs文件夹下的文件
(每次执行该命令hadoop namenode -format 之前都要删除如下文件)
rm -rf /usr/softInstall/hadoop/dfs/data/current
rm /usr/softInstall/hadoop/dfs/data/in_use.lock
rm -rf /usr/softInstall/hadoop/dfs/name/current
rm /usr/softInstall/hadoop/dfs/name/in_use.lock
rm -rf /usr/softInstall/hadoop/hadoop-3.3.0/logs/*
格式化namenode
hadoop namenode -format
使用命令启动
start-all.sh
然后使用jps命令查看NameNode进程号,并结合netstat找到访问地址端口9870
jps
发现进程为31157
netstat -ltunp 找到 对应 端口为 9870
9、访问hadoop管理界面
192.168.3.7:9870或者
192.168.3.7:9870/dfshealth.html#tab-overview
特别注意:HaDoop3.0之前web访问端口是50070 hadoop3.0之后web访问端口为9870
如果出现如下问题:live nodes 显示4但datanodes管理界面只有一个节点,且为 localhost,则需要配置 host
vi /etc/hosts
删除 其它几台机器的hosts
rm /etc/hosts
同步给其它几台机器
scp /etc/hosts root@192.168.3.8:/etc/
scp /etc/hosts root@192.168.3.9:/etc/
scp /etc/hosts root@192.168.3.13:/etc/
scp /etc/hosts root@192.168.3.11:/etc/
scp /etc/hosts root@192.168.3.12:/etc/
重启 网格
/etc/init.d/network restart
再次重启start-all.sh即可
至此,hadoop集群搭建完成。