hadoop安装
环境
域名映射
/etc/hosts
hostnamectl set-hostname slave2
192.168.10.100 master
192.168.10.110 slave1
192.168.10.120 slave2
关闭防火墙。
systemctl stop firewalld
firewall-cmd --state
systemctl disable firewalld
关闭selinux。
getenforce
sed -i 's/enforcing/disabled/g' /etc/selinux/config
setenforce 0
创建普通用户
useradd hadoop
passwd hadoop
为hadoop用户分配sudoer权限。
vim /etc/sudoers --- 93行
hadoop ALL=(ALL) ALL
使用hadoop用户连接服务器,xshell工具
java环境
wget https://dragonwell.oss-cn-shanghai.aliyuncs.com/8/8.6.5-GA/Alibaba_Dragonwell_8.6.5_GA_Linux_x64.tar.gz
tar -xvf Alibaba_Dragonwell_8.6.5_GA_Linux_x64.tar.gz
配置环境变量
cat >> ~/.bashrc << EOF
export JAVA_HOME=/home/hadoop/jdk8u282-b1
export PATH=$PATH:$JAVA_HOME/bin
EOF
ssh免密钥登录
ssh-keygen
ssh-copy-id hostname
伪分布安装
在单台计算机上以多进程的方式运行hadoop集群
192.168.10.100 既是master又是slave
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz
export JAVA_HOME=/home/hadoop/jdk8u282-b1
export HADOOP_HOME=/home/hadoop/hadoop-2.9.2
export PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/hadoop/.local/bin:/home/hadoop/bin:/bin
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
重要的配置文件:
下面简单的描述一下几个重要的配置文件:
hadoop-env.sh:运行Hadoop要用的环境变量。
core-site.xml:核心配置项,包括HDFS、MapReduce和YARN常用的I/O设置等。
hdfs-site.xml:HDFS相关进程的配置项,包括NameNode、SecondaryNameNode、DataNode等。
yarn-site.xml:YARN相关进程的配置项,包括ResourceManager、NodeManager等。
mapred-site.xml:MapReduce相关进程的配置项。
slaves:从节点配置文件,通常每行1个从节点主机名。
log4j.properties:系统日志、NameNode审计日志、JVM进程日志的配置项。
Hadoop的配置文件繁多,我们可采用最小配置(6个配置文件),其余文件保留默认即可:
导出JAVA_HOME环境变量:
vim hadoop-env.sh
export JAVA_HOME=/home/hadoop/jdk8u282-b1
vim core-site.xml。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.10.100:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.9.2/tmp</value>
</property>
</configuration>
配置fs.defaultFS指定hadoop所使用的文件系统的URI(统一资源标识符),示例中的URI包含协议(hdfs)、NameNode的IP地址(192.168.128.131)和端口(9000)。
配置hadoop.tmp.dir指定hadoop运行时产生的临时文件的存储目录
vim hdfs-site.xml。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>192.168.10.100:50090</value>
</property>
配置dfs.replication指定数据副本的数量,由于是伪分布式形式,只有1个节点,所以这里设置为1即可。
配置dfs.secondary.http.address指定Secondary Namenode的地址和端口。
mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置mapreduce.framework.name指定MapReduce运行在yarn上。
yarn-site.xml。
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.10.100</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
配置yarn.resourcemanager.hostname指定YARN的ResourceManager的地址。
配置yarn.nodemanager.aux-services指定shuffle机制。
vim slaves
master
配置集群中的从节点,一行一个机器名(或IP地址)。这里因为是伪分布式模式,所以master既是主节点,又是从节点。
配置已经完成:
格式化文件系统
hdfs namenode –format
执行成功后,会出现core-site.xml中hadoop.tmp.dir配置项指定的目录:
[hadoop@master ~]$ cd hadoop-2.9.2/
[hadoop@master hadoop-2.9.2]$ ls tmp/
dfs
需要注意的是,格式化只需要一遍即可。如果格式化出错,修改相关配置后,需要先把hadoop.tmp.dir配置的目录删除,才能再次格式化。
启动hadoop
首先启动HDFS:
[hadoop@master hadoop-2.9.2]$ start-dfs.sh
[hadoop@master hadoop-2.9.2]$ jps
2128 Jps
1607 NameNode
1739 DataNode
1995 SecondaryNameNode
然后启动YARN:
[hadoop@master hadoop-2.9.2]$ start-yarn.sh
[hadoop@master hadoop-2.9.2]$ jps
2289 NodeManager
2387 Jps
1607 NameNode
2185 ResourceManager
1739 DataNode
1995 SecondaryNameNode
访问:
关闭Hadoop。
关闭Hadoop集群时,与启动顺序正好相反,先关闭YARN,再关闭HDFS。
[hadoop@master hadoop]$ stop-yarn.sh
stopping yarn daemons
stopping resourcemanager
master: stopping nodemanager
master: nodemanager did not stop gracefully after 5 seconds: killing with kill -9
no proxyserver to stop
[hadoop@master hadoop]$ jps
2789 Jps
1607 NameNode
1739 DataNode
1995 SecondaryNameNode
[hadoop@master hadoop]$ stop-dfs.sh
Stopping namenodes on [master]
master: stopping namenode
master: stopping datanode
Stopping secondary namenodes [master]
master: stopping secondarynamenode
[hadoop@master hadoop]$ jps
3154 Jps