主机规划
hostname | ip | 安装软件 | 版本 | 备注 |
node01 | 192.168.17.101 | Java | 1.8 | |
ntp | 同步时间 | |||
Hadoop | 3.3.4 |
?
服务规划
hostname | ip | NameNode | DataNode | SecondaryNameNode |
node01 | 192.168.17.101 | √ | √ | √ |
关闭防火墙
不关闭防火墙,本地无法访问hadoop相关的UI界面。
关闭防火墙
systemctl stop firewalld.service
确认防火墙状态
systemctl status firewalld.service
时间同步
- 安装ntp软件
yum install -y ntp
- 添加阿里时间同步服务器
# 第一步
vim /etc/ntp.conf
# 在文件中加入阿里时间同步服务器
server ntp.aliyun.com iburst
- 启动ntp服务
service ntpd start
- 设置开机启动
chkconfig ntpd on
免密登录
# 执行以下命令,动态生成.ssh 目录
ssh localhost
# 生成免密登录数字签名
ssh-keygen -t dsa -P ''
# 把生成的 id_dsa.pub 文件内容追加到 authorized_keys 中
cat id_dsa.pub >> authorized_keys
# authorized_keys 授权600,不然ssh node01 还是需要输入密码
chmod 600 authorized_keys
安装软件
安装JDK
- 下载JDK安装包,当前选择JDK版本为1.8
下载地址:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
选择RPM包,下载到本地
- 上传下载的rpm包到服务器
- 安装软件
[root@node01 ~]# rpm -i jdk-8u351-linux-x64.rpm
安装成功后,如果可以看到/usr/java,并且能看到如下图显示的内容,表示安装成功
注:有些软件默认配置的JDK目录为/usr/java/default,如果以解压的方式安装JDK,这几个目录需要手动创建软链接,所以建议使用rpm的方式安装JDK,
- 配置环境变量
# 打开 /etc/profile 文件
vim /etc/profile
# 添加以下两行内容
export JAVA_HOME=/usr/java/default
export PATH=$PATH:%JAVA_HOME/bin
# 让配置文件生效
source /etc/profile
- 验证jdk是否安装成功,输入下面的命令,如果出现下图所示内容表示安装成功
java -version
安装Hadoop
- 下载Hadoop安装包,当前选择版本为3.3.4
下载地址:https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
- 上传到服务器
- 解压软件包
tar -xvf hadoop-3.3.4.tar.gz
- 把解压的文件放到合适的位置
# 创建目录
mkdir /opt/bigdata
#移动加压的文件夹到创建的目录
mv hadoop-3.3.4/ /opt/bigdata/
- 添加环境变量
# 打开 /etc/profile 文件
vim /etc/profile
# 添加以下两行内容
export HADOOP_HOME=/opt/bigdata/hadoop-3.3.4
export PATH=$PATH:%JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# 让配置文件生效
source /etc/profile
- 添加Hadoop核心配置
hadoop-env.sh
# 打开hadoop-en.sh文件
vim /opt/bigdata/hadoop-3.3.4/etc/hadoop/hadoop-env.sh
# 添加JAVA_HOME配置
export JAVA_HOME=/usr/java/default
详细配置如下:
core-site.xml
# 打开core-site.xml文件
vim /opt/bigdata/hadoop-3.3.4/etc/hadoop/core-site.xml
添加如下配置:
<!--配置NameNode服务启动的节点 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
详细配置如下:
hdfs-site.xml
# 打开hdfs-site.xml 文件
vim /opt/bigdata/hadoop-3.3.4/etc/hadoop/hdfs-site.xml
添加如下配置:
<!-- HDFS副本数 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- NameNode日志文件目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/var/bigdata/hadoop/local/dfs/name</value>
</property>
<!-- DataNode日志文件目录 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/var/bigdata/hadoop/local/dfs/data</value>
</property>
<!-- secondaryNode启动服务的节点 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node01:9868</value>
</property>
<!--secondaryNode日志文件目录 -->
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/var/bigdata/hadoop/local/dfs/secondary</value>
</property>
详细配置如下:
workers
# 打开workers文件
vim /opt/bigdata/hadoop-3.3.4/etc/hadoop/workers
# 修改内容为node01
node01
老版本的Hadoop配置文件为slaves。
当前的配置为DataNode服务启动的节点,因为我们当前是单机版本,所以只需要配置node01就行了。
完整的配置如下:
- 初始化HDFS
# 初始化HDFS,会创建NameNode需要的目录,并创建空的fsimage
hdfs namenode -format
cd 到我们的配置的目录,可看到如下目录:
- 启动服务
当前版本默认不推荐使用root用户直接启动服务,需要把需要的目录切换归属为hadoop,并使用hadoop用户启动服务。
start-dfs.sh
启动成功后,会在/var/bigdata/hadoop/local/dfs看到如下目录:
验证
- 修改windows的hosts文件
# 新增配置
192.168.17.101 node01
- 登录HDFS控制台
浏览器浏览:http://node01:9870/
注意:老版本访问的端口号为50070,3.x以后改为9870。
- 创建目录
hdfs dfs -mkdir /bigdata
- 本地创建一个文件,并上传
# 创建文件
echo "hello hadoop" >> hadoop.txt
# 上传文件
hdfs dfs -put hadoop.txt /bigdata
常见错误
1、ERROR: Attempting to operate on hdfs namenode as root ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation. ERROR: Attempting to operate on hdfs datanode as root ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation. ERROR: Attempting to operate on hdfs secondarynamenode as root ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
当前版本Hadoop默认不允许root用户启动服务,最简单的解决方案:把需要的使用的Hadoop目录的归属改为hadoop
# 修改软件安装的目录归属
chown -R hadoop /opt/bigdata/hadoop-3.3.4/
# 修改日志和数据目录归属
chown -R hadoop /var/bigdata
2、Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
当前Hadoop配置文件中配置服务启动节点都是node01,启动脚本中有需要ssh 到对应的节点启动服务,所有必须要提前配置好免密登录,解决方案在安装步骤中。