在 Linux 上部署和使用 Hadoop,通常需要从系统环境、用户与权限、网络、Java、Hadoop 自身配置几个方面做准备。下面按“最小可用 → 集群生产”来说明。
useradd hadoop
passwd hadoop
后续操作尽量用 hadoop 用户,不用 root。
编辑 /etc/hosts:
192.168.1.10 master
192.168.1.11 slave1
192.168.1.12 slave2
并设置主机名:
hostnamectl set-hostname master
systemctl stop firewalld
systemctl disable firewalld
SELinux:
setenforce 0
# 修改 /etc/selinux/config 为 disabled
ssh-keygen -t rsa
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
Hadoop 依赖 JDK(不要用 JRE)
yum install java-1.8.0-openjdk-devel
# 或 Ubuntu
apt install openjdk-8-jdk
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
验证:
java -version
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -xzf hadoop-3.3.6.tar.gz -C /opt
export HADOOP_HOME=/opt/hadoop-3.3.6
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
位于:
$HADOOP_HOME/etc/hadoop/
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/datanode</value>
</property>
</configuration>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
slave1
slave2
mkdir -p /data/hadoop/{tmp,namenode,datanode}
chown -R hadoop:hadoop /data/hadoop
格式化 NameNode(仅一次):
hdfs namenode -format
start-dfs.sh
start-yarn.sh
验证:
jps
应看到:
Web 界面:
ulimit 和 vm.swappiness如果你愿意,我可以:
你现在是学习用还是生产部署?