赞
踩
Hadoop官方指导传送门 传送门
服务器规划,提供 3 台服务器,OS 为centos 7
主机名 | IP | 预备分配服务 |
---|---|---|
centos-node1 | 192.168.99.101 | DataNode,NodeManager,NameNode |
centos-node2 | 192.168.99.102 | DataNode,NodeManager,SecondaryNameNode |
centos-node3 | 192.168.99.103 | DataNode,NodeManager,ResourceManager,HistoryServer |
$ hostnamectl set-hostname centos-node1
可以使用 netstat -r
来查询网关如下图所示:
然后将 dhcp 改为 静态IP
$ vim /etc/sysconfig/network-scripts/ifcfg-enp0s8
完全配置如下所示:
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" #BOOTPROTO="dhcp" BOOTPROTO="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="enp0s8" UUID="5b4ea2f4-a5af-4fac-8793-81692730dad9" DEVICE="enp0s8" ONBOOT="yes" # 新增 GATEWAY=192.168.99.0 # 修改网关,虚拟机需要注意修改nat IPADDR=192.168.99.101 # 分配IP地址 NETMASK=255.255.255.0 # 子网掩码 DNS1=223.5.5.5 # 使用阿里公共DNS1 DNS2=223.6.6.6 # 使用阿里公共DNS2
$ vi /etc/hosts
# 添加
192.168.99.101 centos-node1
192.168.99.102 centos-node2
192.168.99.103 centos-node3
$ vi /etc/profile
# 添加
JAVA_HOME=/usr/local/java/
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
通常,建议HDFS和YARN以单独的用户身份运行。
在大多数安装中,HDFS进程以 “hdfs” 执行。YARN通常使用 “yarn” 帐户
$ adduser hdfs
$ passwd hdfs # 修改密码
为 /etc/sudoers
添加如下图所示:
3 台服务器全部设置
$ ssh-keygen -t rsa
各自分配 ssh key
$ ssh-copy-id centos-node1
$ ssh-copy-id centos-node2
$ ssh-copy-id centos-node3
$ su - hdfs
$ curl -O https://archive.apache.org/dist/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz
$ tar -zxf hadoop-2.7.4.tar.gz -C /opt/hadoop-2.7.4
$ ln -s /opt/hadoop-2.7.4 /usr/local/hadoop
$ chown -R hdfs /opt/hadoop-2.7.4
$ sudo vi /etc/profile
# 修改为
JAVA_HOME=/usr/local/java/
JRE_HOME=$JAVA_HOME/jre
HADOOP_HOME=/usr/local/hadoop
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin
export JAVA_HOME JRE_HOME PATH CLASSPATH HADOOP_HOME
这里我们进入$HADOOP_HOME
文件夹开始操作
$ mkdir -p $HADOOP_HOME/hdfs/data
$ mkdir -p $HADOOP_HOME/tmp
$ sudo vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
增加 或 修改
export JAVA_HOME=/usr/local/java/
$ sudo vi $HADOOP_HOME/etc/hadoop/core-site.xml
configuration配置如下
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://centos-node1:4000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
</configuration>
配置说明:
fs.defaultFS
为NameNode
的地址。
hadoop.tmp.dir
为hadoop
临时目录的地址。默认情况下,NameNode
和DataNode
的数据文件都会存在这个目录下的对应子目录下。
$ sudo vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
内容如下:
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>centos-node2:50090</value> </property> <property> <name>dfs.http.address</name> <value>centos-node2:50070</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/hdfs/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration>
配置说明:
dfs.namenode.secondary.http-address
是指定secondaryNameNode
的http访问地址和端口号,因为在规划中,我们将centos-node2
规划为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地址
或者主机名
,用换行分隔。
$ sudo vi $HADOOP_HOME/etc/hadoop/slaves
这里我们就使用主机名
centos-node1
centos-node2
centos-node3
$ sudo vi $HADOOP_HOME/etc/hadoop/yarn-site.xml
配置如下
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>centos-node3</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> <name>yarn.application.classpath</name> <value> /opt/hadoop-2.7.4/etc/hadoop, /opt/hadoop-2.7.4/share/hadoop/common/*, /opt/hadoop-2.7.4/share/hadoop/common/lib/*, /opt/hadoop-2.7.4/share/hadoop/hdfs/*, /opt/hadoop-2.7.4/share/hadoop/hdfs/lib/*, /opt/hadoop-2.7.4/share/hadoop/mapreduce/*, /opt/hadoop-2.7.4/share/hadoop/mapreduce/lib/*, /opt/hadoop-2.7.4/share/hadoop/yarn/*, /opt/hadoop-2.7.4/share/hadoop/yarn/lib/* </value> </configuration>
配置说明:
按照规划使用centos-node3
做为 resourcemanager
使用yarn.log-aggregation-enable
开启日志聚合,yarn.log-aggregation.retain-seconds
配置聚集的日志在HDFS上最多保存多长时间。
$ sudo vi $HADOOP_HOME/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-node3:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>centos-node3:19888</value> </property> </configuration>
配置说明:
mapreduce.framework.name
设置mapreduce
任务运行在yarn上。
mapreduce.jobhistory.address
是设置mapreduce
的历史服务器安装在centos-node3
上。
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
目录下/usr/local/hadoop/etc/hadoop
。在所有计算机上,该目录应该是相同的目录。
注意:启动和停止单个hdfs相关的进程使用的是"hadoop-daemon.sh"脚本,而启动和停止yarn使用的是"yarn-daemon.sh"脚本。
要启动Hadoop集群,需要同时启动HDFS
和YARN
集群。 首次启动HDFS
时,必须对其进行格式化。将新的分布式文件系统格式化为hdfs
.
$ $HADOOP_HOME/bin/hdfs namenode -format <群集名称>
集群名称可以不填写,不出意外,执行完成后$HADOOP_HOME/hdfs
中就有东西了。
如果配置了slaves
和ssh互信
我们可以
$ $HADOOP_HOME/sbin/start-dfs.sh
如果配置了workers和ssh互信我们可以
$ $HADOOP_HOME/sbin/start-yarn.sh
规划在centos-node3
上,因此我们在centos-node3
上执行
$ $HADOOP_HOME/sbin/yarn-daemon.sh start resourcemanager
规划在centos-node3
上,因此我们在centos-node3
上执行
$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
位于centos-node1
的50070
端口:http://centos-node1:50070/
位于centos-node3
的8088
端口:http://centos-node3:8088/
位于centos-node3
的19888
端口:http://centos-node3:19888/
为了测试我们使用 wordcount
来测试
新建文件
$ sudo vi /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-2.7.4.jar wordcount /demo/word.txt /output
查看文件列表
$ hdfs dfs -ls /output
Found 2 items
-rw-r--r-- 3 root supergroup 0 2020-09-13 16:01 /output/_SUCCESS
-rw-r--r-- 3 root supergroup 60 2020-09-13 16:01 /output/part-r-00000
查看文件中内容
$ hdfs dfs -cat /output/part-r-00000
hadoop 3
hbase 1
hive 2
mapreduce 1
spark 2
sqoop 1
storm 1
https://juejin.im/post/6844904041013575688#heading-21
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。