参考文档
1.1软件准备
操作系统:centos7 hadoop版本:3.3.1 java版本:1.8
1.2集群规划
主节点: hadoop0 192.168.15.10 从节点1: hadoop1 192.168.15.11 从节点2: hadoop2 192.168.15.12
1.3配置主机名与IP映射(3个节点都配置)
设置主机名:
vi /etc/hostname #修改文件内容为hadoop0
设置主机名及IP映射:
vi /etc/hosts #在文件尾部添加内容,格式:IP地址 主机名(中间用空格分隔),保存退出 192.168.15.10 hadoop0 192.168.15.11 hadoop1 192.168.15.12 hadoop2
验证:
ping hadoop0 ping hadoop1 ping hadoop22、伪分布式hadoop集群搭建
PS:以下操作均是对hadoop主节点配置:主要配置主机名与IP映射、ssh免密钥登录等等。
2.1java环境安装$ mv jdk1.8.0_251 /usr/local/java
$ vi /etc/profile
#自定义环境变量 export JAVA_HOME=/usr/local/java export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
$ source /etc/profile
2.2ssh免密钥登录#如果以前配置过,可以删除,每台机器都操作一次 rm -f ~/.ssh/known_hosts
ssh-keygen #剩下的一路回车即可 ssh-copy-id hadoop0 #根据提示输入yes以及密码,密码也可以设置为空 ssh-copy-id hadoop1 ssh-copy-id hadoop2
验证是否免密钥
$ ssh localhost $ ssh 127.0.0.1 $ ssh hadoop0 $ ssh hadoop1 $ ssh hadoop22.3hadoop环境配置
PS:进入/usr/local/hadoop/etc/hadoop目录,涉及的配置文件有:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml
@1配置hadoop-env.sh
export JAVA_HOME=/usr/local/java
@2配置core-site.xml
fs.defaultFS hdfs://hadoop0:8020 hadoop.tmp.dir /usr/local/hadoop/tmp fs.trash.interval 1440
@3配置hdfs-site.xml
dfs.namenode.http-address hadoop0:50070 dfs.replication 3 dfs.permissions.enabled false
@4配置yarn-site.xml
yarn.resourcemanager.hostname hadoop0 yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.vmem-check-enabled false yarn.log-aggregation-enable true
@5配置mapred-site.xml(需要修改模板:cp mapred-site.xml.template mapred-site.xml)
2.4格式化hadoop并启动伪分布式集群mapreduce.framework.name yarn mapreduce.admin.user.env HADOOP_MAPRED_HOME=${HADOOP_HOME} yarn.app.mapreduce.am.env HADOOP_MAPRED_HOME=${HADOOP_HOME} mapreduce.map.env HADOOP_MAPRED_HOME=${HADOOP_HOME} mapreduce.reduce.env HADOOP_MAPRED_HOME=${HADOOP_HOME}
进入到/usr/local/hadoop目录下
@1格式化(格式化操作不能重复执行。如果一定要重复格式化,带参数-force即可)
bin/hdfs namenode -format #注意:在执行的时候会报错,是因为缺少which命令,安装即可 #执行下面命令安装 yum install -y which
@2启动伪分布式hadoop
sbin/start-all.sh #当出现以下错误时: ERROR: Attempting to operate on hdfs namenode as root ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
解决方案一( 不推荐,有时候不起作用):
vi /etc/profile #然后向里面加入如下的内容 export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root #输入如下命令使配置文件生效 source /etc/profile
解决方案二(推荐):
#ps: #1.master,slave都需要修改start-dfs.sh,stop-dfs.sh,start-yarn.sh,stop-yarn.sh四个文件 #2.如果你的Hadoop是另外启用其它用户来启动,记得将root改为对应用户 #hadoop/sbin路径下面:将start-dfs.sh,stop-dfs.sh俩个文件顶部添加以下参数 #!/usr/bin/env bash HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root #hadoop/sbin路径下面:将start-yarn.sh、stop-yarn.sh俩个文件顶部添加以下参数 #!/usr/bin/env bash YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root
@3验证是否成功
jps #当出现以下进程说明hadoop伪分布式搭建成功 NodeManager Jps NameNode Secondar yNameNode ResourceManager DataNode3、完全分布式hadoop集群搭建
ps:以下操作都在主节点操作
进入/usr/local/hadoop
@1停止上一步的伪分布式hadoop
sbin/stop-all.sh
@2指定nodemanager的地址,修改文件yarn-site.xml
The hostname of the RM. yarn.resourcemanager.hostname hadoop0
@3修改hadoop0的hadoop的一个配置文件etc/hadoop/workers
#ps:hadoop从3.3.0版本后,slaves配置文件名更名为workers #删除原来的所有内容,修改为如下 hadoop1 hadoop2
@4拷贝至其他俩个节点
scp -rq /usr/local/hadoop hadoop1:/usr/local/ scp -rq /usr/local/hadoop hadoop2:/usr/local/
@5启动hadoop分布式集群服务
sbin/start-all.sh #ps:在执行的时候会报错,是因为两个从节点缺少which命令,安装即可(yum install -y which)
@6验证完全分布式集群是否正常
#hadoop0主节点需要以下进程 NameNode SecondaryNameNode ResourceManager JPS #hadoop1从节点需要以下进程 NodeManager DataNode JPS #hadoop2从节点需要以下进程 NodeManager DataNode JPS
@7 出现异常的处理办法
–slave的datanode无法启动
#查看日志,/usr/local/hadoop/logs #清空/usr/local/hadoop下面的logs、tmp目录 #主节点master再一次执行 bin/hdfs namenode -format -force
– hdfs dfsadmin -report查看datanode为空
#每个Node都执行,删除datanode配置的dfs.data.dir目录 #本次集群是配置到以下目录 rm -rf /usr/local/hadoop/tmp/* #master再一次执行格式化 hdfs namenode -format -force4、wordcount单词计数验证集群服务
1.创建本地文件并写入任意内容
vi a.txt hello hadoop hello spark hello flink
2.上传该文件到HDFS并验证是否上传成功
hdfs dfs -put a.txt / hadoop fs -ls /
3.提交job程序至hadoop集群
cd /usr/local/hadoop/share/hadoop/mapreduce hadoop jar hadoop-mapreduce-examples-3.3.1.jar wordcount /a.txt /out
4.查看计算结果
hadoop fs -ls /out hadoop fs -cat /out/part-r-000005、WEBUI地址查看 5.1hdfs查看地址
#根据hdfs-site.xml配置的地址 http://hadoop0:500705.2yarn查看地址
#默认地址 http://hadoop0:8088



