《Hadoop环境搭建教程》
这里使用的是VMware16,镜像使用CentOS-7-x86_64-Minimal-2009.iso
可以在中科大镜像站获得http://mirrors.ustc.edu.cn/centos/7/isos/x86_64/
这里选择Minimal(最小化)是因为我们用不到图形界面,仔细一想服务器几乎都是没有显卡的,谁会装图形界面呢?
首先我们点击创建虚拟机
你已经是个成熟的开发人员了,要学会自己定义安装的东西了。
这里直接下一步
这里点第二个,我们就可以用旁边的浏览按钮去找我们需要的linux镜像了。
选好了就可以下一步了
名字和路径可以自己选择
这里一般默认是1个处理器也就是1核,然后选择2个线程。
内存的话推荐内存就好了,看你自己的内存实际大小酌情增加或减少
这里我们默认选择NAT
这里默认推荐的就好
这里也用推荐的就OK
这里直接下一步
这里20G就够了,然后最好选择存储为单个文件
然后直接下一步就好了
这时候虚拟机会自动打开,然后等待它进入选择语言的安装界面就好了,但是这里语言绝对要记得选英文,因为没有图形界面的linux系统是不会显示中文的,英文不好的同学就有点痛苦了吧,但是没有办法呀。
这里我们直接点右下角的continue 继续
然后这里我们直接点这个安装目标磁盘
进去以后直接点左上角的done,它会默认分好给你
最后点Begin Installation就可以让它自己安装了
但这里需要去设置root用户密码,旁边的那个创建用户可以不管,因为目前阶段来说没有什么太大用处。(真就化身root敢死队)
这里我设置的是123,但是linux不建议使用太简单的密码,所以这里你会发现点一次Done没有退出去,所以你需要连点两次Done
那么现在你就可以等待它安装完成然后点击reboot重启了。
接下来因为我懒,所以直接copy之前写的联网手册了。
基于Centos7的Vmware虚拟机联网手册
首先你的主机网络一定要畅通,不然下面的操作毫无意义
一.检查VMware的虚拟机网络设置
首先它必须是能够选择的,而不是灰色的,灰色意味着你的Vmware可能有问题,或者你的网络适配器没有启用
然后点击这个NAT Settings
接下来是重点,你需要牢牢记住这个界面的这些信息,它们是你联网是否成功的关键!!
记住上面的IP, 子网掩码 ,网关
二. 打开centos7虚拟机,输入用户名和密码,注意,linux下密码是默认看不见的,所以敲对了回车就好,进入终端,关闭防火墙,打开ssh服务,输入以下命令,一条一条回车执行
1 | systemctl stop firewalld |
三. 编辑网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
这个文件里,你需要更改的地方有几个
- BOOTPROTO=static
- IPADDR=172.16.254.80 这个IP是根据你的NAT Settings里的那个IP决定的,不要照抄,最后一位尽量设置后一点,比如 172.16.254. 111 或者172.16.254 . 123
- ONBOOT=yes
- NETMASK=255.255.255.0 这里照抄NAT Settings里的掩码即可
- GATEWAY=172.16.254.2 这里也要照抄NAT Settings里的GATEWAY
- DNS1=114.114.114.114 我选择电信的域名解析服务
以上配置完成以后,按 :wq保存退出,重启虚拟机。
顺利的话,你现在可以用xshell登录了
二.Hadoop环境搭建
一.环境搭建
1.虚拟机:VMware (默认你已经有了,并且知道怎么使用)
2.Hadoop-2.10.1的包(可以去官方下载,也可以选择各大高校的镜像站下载,例如:http://mirrors.ustc.edu.cn/apache/hadoop/core/ 中国科学技术大学镜像站)
3.JDK的包 (oracle官网下载或者其他任意方式下载都行,但注意扩展格式需为.tar.gz)
4.将以上两个包通过任意门传送进虚拟机的linux系统内然后解压到你喜欢的目录下吧,最好是/usr/下,方便统一管理。
5.网络配置默认你已经配置完成了,这里就不赘述了,因为我懒
二. 环境配置
在/etc/profile里添加环境变量(/etc目录的修改必然需要使用root权限)
1 | export JAVA_HOME=/usr/share/java #写你的jdk的目录 |
写完以后,保存退出,输入命令回车:
1 | $ source /etc/profile |
如果在这个时候发现一些基础的linux系统命令无法使用了,大概率是你的环境变量配置得有问题,先在终端输入:
1 | export PATH=/usr/bin:$PATH |
以暂时能够使用一些基本命令,然后回到刚才修改的文件里看看是不是有哪里打错了
使用以下命令检查hadoop是否能够正常运作:
1 | hadoop version |
如果输出 command not found 那就是还没有配置好,但是基本上不会出现这样的情况
三. Hadoop单机版搭建
单机版不需要搭建,直接启动就是了
四. Hadoop伪分布式搭建
1.伪分布式的意思就是一个主机它既充当NameNode,又充当DataNode.
2.伪分布式只需要一台主机就能够完成.
3.hadoop下比较重要的两个目录分别是/sbin和/etc/hadoop,/sbin目录下有启动hadoop不同服务的各种脚本命令,而/etc/hadoop下都是hadoop的配置文件,需要配置的文件一共有如下几个:
- hadoop-env.sh # hadoop 环境,需要在这里添加jdk的目录
- core-site.xml # hadoop 核心设置
- hdfs-site.xml # hadoop hdfs文件系统设置
- yarn-site.xml # yarn 资源管理设置
- mapred-site.xml # mapreduce hadoop计算系统设置
hadoop-env.sh只需要在末尾加上jdk的环境变量即可
core-site.xml配置如下:
1 | <configuration> |
hdfs-site.xml配置如下:
1 | <configuration> <property> <name>dfs.replication</name> <value>1</value> ## 因为是伪分布式,所以这里写一个就好了 </property> <property> <name>dfs.namenode.name.dir</name> <value>/usr/hadoop/data/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/usr/hadoop/data/data</value> </property> </configuration> |
yarn-site.xml配置如下:
1 | <configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:18040</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:18030</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:18088</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:18025</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:18141</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration> |
mapred-site.xml默认是没有的,但是有个template文件,把它拿过来用就好了:
cp mapred-site.xml.template mapred-site.xml
然后配置一下:
1 | <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> </configuration> |
最后需要配置一下salves文件,在slaves文件里把第一行的localhost去掉,然后添加:
1 | master |
原本master是不应该出现在这个文件里的,但由于这是伪分布式,所以把master写进去就好了。
以上配置完成后可以进入$HADOOP_HOME/下,把刚才的目录创建好:
1 | mkdir data tmp |
然后进入$HADOOP_HOME/sbin/目录,执行命令:
1 | hdfs namenode -format # 其实 hadoop namenode -format也行的 |
初始化hadoop系统,如果在靠近结束处看到输出 successfully 的单词,意思就是初始化成功了。
接下来可以启动hadoop系统试试看:
1 | sh start-all.sh |
这个时候可能会出现要你输入yes的fingerprint,然后还可能要你输入master的密码,输入就是了。
等待启动工作结束以后,输入:
1 | jps |
这个时候输出的结果应该要包含:
1 | NameNode |
如果都有恭喜你成功搭建好了hadoop伪分布式系统,可以登陆浏览器输入http://master:50070(此处的master替换为你的master的ip地址)
你会看到有一个Live Nodes,那就是你的master了
五. Hadoop 完全分布式搭建
根据上面伪分布式搭建的步骤,只有几个需要修改的地方:
- 在hdfs-site.xml里将副本数量由1改为你的从机数量
- 将slaves的文件删除master自身,修改为你所有的从机的名字或是ip地址
Spark环境安装
一. 解压 spark 压缩包到本地
$ tar -xvf (或者 -zxvf) spark-3.1.1.tar.gz # 具体包名是你实际下载的包的名字
$ mv spark-3.1.1 spark # 改名,可省略
二. 配置spark环境变量
(1) 可以配置全局变量,也可选择只配置本地变量
vi /etc/profile 或 vi ~/.bash_profile (千万不要遗漏 ~号)
export SPARK_HOME=/root/software/spark
export PATH=$SPARK_HOME/bin:$PATH
三.配置spark (目录在$SPARK_HOME/conf 下)
$ cd $SPARK_HOME/conf
(1) 编辑 spark-env.sh.template,先将其复制一份,改为 spark-env.sh
# 1. 配置java
export JAVA_HOME=/root/jdk1.8.0_171
# 2. 配置scala
export SCALA_HOME=/root/scala-2.11.7
# 3. 配置hadoop
export HADOOP_HOME=/root/hadoop-2.7.7
# 4.hadoop配置文件路径
export HADOOP_CONF_DIR=/root/hadoop-2.7.7/etc/hadoop
# 5.spark master的主机
export SPARK_MASTER_IP=master # 192.168.80.111
export SPARK_MASTER_PORT=7077
# 6.设置一个工人的内存使用大小
export SPARK_WORKER_MEMORY=4g
# 7.设置一个工人所需要的核心数
export SPARK_WORKER_CORES=2
# 8.设置工人实例化的数量(每台机器的工人数)
export SPARK_WORKER_INSTANCES=1
# 如果你同时在用hbase的话
export SPARK_CLASSPATH=$HBASE_HOME/lib/hbase-protocol-1.2.4.jar:$HBASE_HOME/lib/hbase-common-1.2.4.jar:$HBASE_HOME/lib/htrace-core-3.1.0-incubating.jar:$HBASE_HOME/lib/hbase-server-1.2.4.jar:$HBASE_HOME/lib/hbase-client-1.2.4.jar:$HBASE_HOME/lib/metrics-core-2.2.0.jar:$SPARK_CLASSPATH
(2)编辑 slaves.template, 该文件在spark3.0版本以后已经更名为workers.template, slave这个词并不友好啊…
$ cp slaves.template slaves # spark 2.x
$ cp workers.template workers # spark 3.x
编辑这个文件
# localhost 删除或注释这行
s1
s2
#添加所有子节点
一切准备就绪后,把spark分发到你的所有节点上, 配置就完成了