Hadoop官方指导传送门 传送门html
截止当前(2020年01月08日),Hadoop最新版本是3.2.1
,本文依据3.2.1
部署安装java
本篇文章只介绍了如何安装和配置范围从几个节点到具备数千个节点的超大型Hadoop集群。 要快速天眼使用Hadoop,可能只须要将其安装在单台服务器上。 node
本篇文章不涉及hadoop安全或高可用性等高级话题。 web
服务器规划,提供四台服务器,OS 为centos 7
shell
hostnamectl set-hostname centos-x
复制代码
x
为咱们每台服务器apache
完成咱们的主机以下vim
主机名 | IP | 预备分配服务 |
---|---|---|
centos-1 | 10.211.55.11 | DataNode NodeManager NameNode |
centos-2 | 10.211.55.12 | DataNode NodeManager SecondaryNameNode |
centos-3 | 10.211.55.13 | DataNode NodeManager ResourceManager |
centos-4 | 10.211.55.14 | DataNode NodeManager HistoryServer |
经过yum安装jdkcentos
yum update
yum install java-1.8.0-openjdk-devel -y
复制代码
修改 环境变量安全
vim /etc/profile
复制代码
在尾部新增bash
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
export PATH=$JAVA_HOME/bin:$PATH
复制代码
vim /etc/sysconfig/network-scripts/ifcfg-enp0s5
复制代码
完整配置以下
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" # 修改dhcp 为 static
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="enp0s5"
UUID="e2bda9d6-dc4f-4513-adbc-fdf3a1e2f384"
DEVICE="enp0s5"
ONBOOT="yes"
# 新增
GATEWAY=10.211.55.1 # 修改网关,虚拟机须要注意修改nat
IPADDR=10.211.55.12 # 分配IP地址
NETMASK=255.255.255.0 # 子网掩码
DNS1=223.5.5.5 # 使用阿里公共DNS1
DNS2=223.6.6.6 # 使用阿里公共DNS2
复制代码
一般,建议HDFS和YARN以单独的用户身份运行。
在大多数安装中,HDFS进程以“hdfs”执行。YARN一般使用“yarn”账户
adduser hdfs
passwd hdfs # 修改密码
复制代码
四台服务器所有设置
ssh-keygen -t rsa
复制代码
ssh-copy-id centos-1
ssh-copy-id centos-2
ssh-copy-id centos-3
ssh-copy-id centos-4
复制代码
切换至 hdfs 用户
su - hdfs
复制代码
curl http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz -O
复制代码
这里直接解压到/usr/local/
下
tar -zxf hadoop-3.2.1.tar.gz -C /usr/local/hadoop-3.2.1
复制代码
sudo vim /etc/profile
复制代码
修改原先配置为
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
export HADOOP_HOME=/usr/local/hadoop-3.2.1
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
复制代码
这里咱们进入$HADOOP_HOME
文件夹开始操做
mkdir -p $HADOOP_HOME/hdfs/data
mkdir -p $HADOOP_HOME/tmp
复制代码
sudo vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
复制代码
增长 或 修改
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
复制代码
vim etc/hadoop/core-site.xml
复制代码
configuration配置以下
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://10.211.55.11:4000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-3.2.1/tmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
</configuration>
复制代码
fs.defaultFS
为NameNode
的地址。 hadoop.tmp.dir
为hadoop
临时目录的地址,默认状况下,NameNode
和DataNode
的数据文件都会存在这个目录下的对应子目录下。
vim etc/hadoop/hdfs-site.xml
复制代码
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>10.211.55.12:50090</value>
</property>
<property>
<name>dfs.http.address</name>
<value>10.211.55.11:50070</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-3.2.1/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-3.2.1/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
复制代码
dfs.namenode.secondary.http-address
是指定secondaryNameNode
的http访问地址和端口号,由于在规划中,咱们将centos-2
规划为SecondaryNameNode
服务器。
dfs.http.address
配置的是本机默认的dfs
地址,有些服务器能够不用配置,个人试过了,必须加上,否则后续网页打不开。 dfs.namenode.name.dir
指定name文件夹,dfs.datanode.data.dir
指定data文件夹 dfs.datanode.data.dir
指定副本数,通常小于服务器数,咱们设置为3
在hadoop2.x
中叫作slaves
,在3.x
版本中更名workers
。 用来指定HDFS
上有哪些DataNode
节点,以及各个节点使用ip地址
或者主机名
,用换行分隔。
vim etc/hadoop/workers
复制代码
这里咱们就使用主机名
centos-1
centos-2
centos-3
centos-4
复制代码
vim etc/hadoop/yarn-site.xml
复制代码
配置以下
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>centos-3</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
</configuration>
复制代码
按照规划使用centos-3
作为 resourcemanager
使用yarn.log-aggregation-enable
开启日志聚合,yarn.log-aggregation.retain-seconds
配置汇集的日志在HDFS上最多保存多长时间。
vim etc/hadoop/mapred-site.xml
复制代码
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>centos-4:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>centos-4:19888</value>
</property>
</configuration>
复制代码
mapreduce.framework.name
设置mapreduce
任务运行在yarn上。 mapreduce.jobhistory.address
是设置mapreduce
的历史服务器安装在centos-4
上。 mapreduce.jobhistory.webapp.address
是设置历史服务器的web页面地址和端口号。 yarn.app.mapreduce.am.env
,mapreduce.map.env
,mapreduce.reduce.env
须要设置为HADOOP_MAPRED_HOME=${HADOOP_HOME}
,不然在运行yarn程序的时候会出现jar包未找到的错误。
完成上述全部必要的配置后,将文件分发到全部服务器的HADOOP_CONF_DIR
目录下(/user/local)
。在全部计算机上,该目录应该是相同的目录。
要启动Hadoop集群,须要同时启动HDFS
和YARN
集群。 首次启动HDFS
时,必须对其进行格式化。将新的分布式文件系统格式化为hdfs
.
$HADOOP_HOME/bin/hdfs namenode -format <群集名称>
复制代码
集群名称能够不填写,不出意外,执行完成后$HADOOP_HOME/hdfs/data
中就有东西了。
若是配置了workers
和ssh互信
咱们能够
$HADOOP_HOME/sbin/start-dfs.sh
复制代码
若是配置了workers和ssh互信咱们能够
$HADOOP_HOME/sbin/start-yarn.sh
复制代码
若上面没有配置的workers
和ssh互信
咱们能够
namenode
$HADOOP_HOME/bin/hdfs --daemon start namenode
复制代码
DataNode
$HADOOP_HOME/bin/hdfs --daemon start datanode
复制代码
规划在centos-4
上,所以咱们在centos-4
上执行
$HADOOP_HOME/bin/yarn --daemon start nodemanager
复制代码
规划在centos-3
上,所以咱们在centos-3
上执行
$HADOOP_HOME/bin/yarn --daemon start resourcemanager
复制代码
规划在centos-4
上,所以咱们在centos-4
上执行
$HADOOP_HOME/bin/mapred --daemon start historyserver
复制代码
位于centos
的50070
端口:http://centos-1:50070/
位于centos-3
的8088
端口:http://centos-3:8088/
位于centos-4
的19888
端口:http://centos-4:19888/
为了测试咱们使用 wordcount
来测试
sudo vim /opt/word.txt
复制代码
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop
复制代码
hadoop
里文件夹demo
hadoop fs -mkdir /demo
复制代码
hdfs dfs -put /opt/word.txt /demo/word.txt
复制代码
hadoo
p的/output
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /demo/word.txt /output
复制代码
hdfs dfs -ls /output
复制代码
Found 2 items
-rw-r--r-- 3 hdfs supergroup 0 2020-01-07 02:20 /output/_SUCCESS
-rw-r--r-- 3 hdfs supergroup 60 2020-01-07 02:20 /output/part-r-00000
复制代码
hdfs dfs -cat /output/part-r-00000
复制代码
2020-01-07 16:40:19,951 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
hadoop 3
hbase 1
hive 2
mapreduce 1
spark 2
sqoop 1
storm 1
复制代码