本文共 6978 字,大约阅读时间需要 23 分钟。
最近买了一台云服务器(阿里云)来做web服务器,做的网站只是初步版本(),没人访问,觉得有些浪费。加上舍友也有一台云服务器(天翼云),并且最近在学spark,于是打算在这两台机器中搭建环境。这两台机器都是1核2g的,反正对于学习时足够了。
在配置过程中我发现:我遇到的所有的bug,都是配置问题,尤其是简单的单词拼写的问题。如果你配置过程中有什么问题可以留言反馈。
因为期间借鉴了太多博主的博客,就不一一感谢了。
配置一共花费了一天半的时间,配置完成后,不想再去看书了,于是现在写一下总结。(自己有太多东西要学,又有太多东西要总结,?)
云主机:天翼云主机:hadoop1,阿里云主机:hadoop2
版本: ,hadoop3.1.1
名称 :
hadoop1:NameNode,DataNode;ResourceManager,NodeManager;Master,worker
hadoop2:DataNode;NodeManager;worker
如果买云服务器,最好要买一个厂商的一个地区的,这样可以通过局域网连接,会很方便。
好像除了百度云,其他的都有大学生优惠,买ecs就行,一年120左右,然后用cetnos7操作系统。初步通过官网登录,查找和更改自己的用户密码,以及操作系统用户密码,用来接下来的远程连接使用。有一切问题就问客服。
注意云服务器需要安全组配置来开放端口,我先把我用到的端口列举出来:
ssh使用22端口,买了之后就有的配置。
在hadoop1服务器开放此服务器端口
HDFS | NameNode | 50070 | dfs.namenode.http-address | http服务的端口 |
YARN | ResourceManager | 8088 | yarn.resourcemanager.webapp.address | http服务端口 |
还需要开放9000,8031端口。
在hadoop2需要开放的端口:9866端口。
(有钱就支持正版啦),直接用ssh登录就行。注意使用ssh登录需要在服务器配置ssh协议,我这两台云主机开机就有ssh协议,不需要我自己再在服务器配置下载。使用工具还是挺方便的,尤其是支持复制粘贴。
配置的过程中可以多参考几个博客:,最好是参考官方文档。
先把全部的配置信息放到这里:注意另外一台也需要配置,可以使用scp命令传过去
vim /etc/profile
# java pathexport JAVA_HOME=/usr/lib/jvm/javaexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jarexport PATH=$PATH:$JAVA_HOME/bin#hadoop pathexport HADOOP_HOME=/usr/lib/hadoop-3.1.1export PATH=$PATH:$HADOOP_HOME/binexport SCALA_HOME=/usr/lib/scala-2.12.8export PATH=$PATH:$SCALA_HOME/binexport PATH=$PATH:/usr/lib/spark-2.4.0-bin-hadoop2.7/bin
注意每次配置好后使用 source /etc/profile 来让环境变量生效
先配置host环境变量:参考网址参考网址:,配置host文件,分别在两台服务器设置hadoop1和hadoop2对应ip。为什么这样做我也不太清楚,不过挺正确的。参照此网址进行到设置ssh免密码登录和关闭防火墙(云服务器防火墙默认是关闭的)。
参考这个来设置用户密码:即在一台服务器建立hadoop1用户,在另一台服务器新建hadoop2服务器。
A:JAVA(jdk1.8以上)和scala下载和环境配置:(hadoop需要java环境,spark需要scala环境),
通过yum或wget下载都行,因为教程太多了,自己百度。两种方式都可以,但是yum还是最简单的可以参考:
java:(通过yum安装,但是还是需要找到自己的路径配置环境变量,因为hadoop需要java环境路径,默认的yum安装到/usr/lib,从里面找到路径,配置一下就好了)或者这个更完善:
scala:。反正我在官网愣是没找到下载路径,?。
B:hadoop下载和环境配置:
其中的一个问题:。因为我就两台,所以使用的共存。
①:下载与解压
去官网
通过wget命令下载,如:wget
再通过tar命令解压到指定目录 如:#tar -xzvf hadoop-3.0.0.tar.gz /usr/lib (我是都放在/usr/lib目录中了。)
②:配置环境变量。这个参考上面给的profile文件内容
③:配置hadoop配置文件:参考:
给出我的配置方式:/usr/lib/hadoop-3.1.1/etc/hadoop目录中
注意新建core-site.xml中的tmp.dir以及hdfs-site.xml中的路径。需要人为新建 hdfs文件夹,其中有data和name文件夹。还有pids和tmp文件夹。
1.hadoop-env.sh(设置hadoop pid文件路径和引入java路径)export HADOOP_PID_DIR=/bigdata/hadoop/pidsexport JAVA_HOME=/usr/lib/jvm/java2.core-site.xml3.hdfs-site.xml:(设置name节点和data节点数据存放位置) fs.default.name hdfs://hadoop1:9000 默认的HDFS端口,用于namenode与datanode之间的通讯,ip为namenode的地址 hadoop.tmp.dir /lib/hadoop-3.1.1/tmp 存放hadoop文件系统依赖的基本配置 4.yarn-env.sh:export JAVA_HOME=/usr/lib/jvm/java5.mapred-site.xml: dfs.replication 1 副本个数,配置默认是3,应小于datanode机器数量 dfs.http.address 0.0.0.0:50070 dfs.namenode.name.dir file:/usr/lib/hadoop-3.1.1/hdfs/name dfs.namenode.data.dir file:/usr/lib/hadoop-3.1.1/hdfs/data 6.yarn-site.xml(下面的配置是我出现问题是搜索到的解决办法) mapreduce.job.tracker hdfs://hadoop1:8001 true mapreduce.application.classpath /lib/hadoop-3.1.1/etc/hadoop, /lib/hadoop-3.1.1/share/hadoop/common/*, /lib/hadoop-3.1.1/share/hadoop/common/lib/*, /lib/hadoop-3.1.1/share/hadoop/hdfs/*, /lib/hadoop-3.1.1/share/hadoop/hdfs/lib/*, /lib/hadoop-3.1.1/share/hadoop/mapreduce/*, /lib/hadoop-3.1.1/share/hadoop/mapreduce/lib/*, /lib/hadoop-3.1.1/share/hadoop/yarn/*, /lib/hadoop-3.1.1/share/hadoop/yarn/lib/* mapreduce.jobhistory.address hadoop1:10020 mapreduce.jobhistory.address hadoop1:19888 7.workers文件hadoop1hadoop2 yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname hadoop1 yarn.resourcemanager.address hadoop1:8032 yarn.resourcemanager.scheduler.address hadoop1:8030 yarn.scheduler.minimum-allocation-mb 256
这里有一个问题:在我的机器上的hdfs文件中的data文件夹里面是没有数据的,而在tmp文件夹的dfs文件夹中。不明白这是为什么。不过不影响使用。
④:将/usr/hadoop复制到其他服务器:scp -r /usr/lib/hadoop-3.1.1/etc/hadoop hadoop2:/usr/lib/hadoop-3.1.1/etc
⑤:格式化namenode: (注意配置了hadoop环境变量) hadoop namenode -format
⑥:启动hdfs 去/usr/lib/hadoop-3.1.1/etc/hadoop/sbin目录中使用脚本
./start-all.sh
⑦:本机登录网址查看状态:注意已经开放了namenode云主机的50070端口,输入进入页面
输入: 进入yarn页面
控制台输入:jps命令可以查看到在hadoop1下有NameNode,DataNode;ResourceManager,NodeManager;
hadoop2下有DataNode;NodeManager;进程
如图:,
安装完成后开始测试:
新建两个txt文件,用来作为计数的测试文本。文件内容随便写,比如我写的:
然后新建一个hdfs目录,hdfs dfs -mkdir /input
上传两个测试文件:hdfs dfs -put t1.txt /input
进入:/lib/hadoop-3.1.1/share/hadoop/mapreduce找到这次测试用的jar包:hadoop-mapreduce-examples-3.1.1.jar
然后通过命令运行:hadoop jar hadoop-mapreduce-examples-3.1.1.jar wordcount /input /output2
注意output2是不用新建的,而input需要之前建立好。
然后程序会运行。之后就会在output2文件夹中得到两个结果文件。
显示输出文件:
hadoop配置完成。?
如果有问题注意查看日志。
其他参考文档:
spark和hadoop不是互斥的,spark既可以在自己集群下运行,也可以是spark on yarn运行
注意spark运行在yarn上时,就不需要开启spark集群,因为任务是交给yarn来调度转化为mapreduce来处理。
我配置了几天,还是无法解决spark不能运行在yarn上。请酌情参考。
vim spark-env.sh 在最后添加
export JAVA_HOME=/usr/lib/jvm/javaexport SCALA_HOME=/usr/lib/scala-2.12.8export HADOOP_HOME=/usr/lib/hadoop-3.1.1export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport HADOOP_CONF_DIR=/usr/lib/hadoop-3.1.1/etc/hadoopexport YARN_CONF_DIR=$HADOOP_HOME/etc/hadoopexport SPARK_LIBARY_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib/nativeexport SPARK_MASTER_HOST=hadoop1export SPARK_LOCAL_IP=hadoop1# export SPARK_MASTER_PORT=7080export SPARK_EXECUTOR_CORES=1export SPARK_EXECUTOR_MEMORY=1024mexport SPARK_EXECUTOR_INSTANCES=1export SPARK_LIBARY_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib/native#Spark的local目录export SPARK_LOCAL_DIRS=/usr/lib/spark-2.4.0-bin-hadoop2.7/local#worker目录export SPARK_WORKER_DIR=/usr/lib/spark-2.4.0-bin-hadoop2.7/work
再就是修改slaves
vim slaves
添加自己修改之后master的hostname和 worker 节点的 hostname
相关了解:
去官网通过wget命令下载,有遇到问题就根据日志内容来查找解决办法,
因为我试了很多种配置,没有办法使用公网ip来访问webUI,所以只能使用w3m来通过终端访问内网web。
先下载w3m:
下载完成后通过:w3m http://hadoop1:8080
可以看到有两个节点及其信息。
其中可能出现的问题:
spark集群启动后WorkerUI界面看不到Workers解决
先测试spark集群的可用性:
进入sbin文件夹启动集群./start-all.sh
jps查看启动集群:发现有了worker和master
在/lib/spark-2.4.0-bin-hadoop2.7位置执行
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://192.168.1.227:7077 examples/jars/spark-examples_2.11-2.4.0.jar
会出现
说明集群搭建可以使用。
其他的几种方法参考:
反正我电脑上是用不了,不管了。搞了3天了,恶心人。
相关阅读:
转载地址:http://bfihn.baihongyu.com/