hadoop环境搭建
1、初始介绍:
1.1 目标:
1. 一般情况下,实现机器学习使用sklearn实现即可
2. 基于python的sklearn机器学习框架是一个单机的机器学习模型训练框架,模型能够处理的数据量受机器配置的影响,说白点就是说一台机器不能处理太多的数据
3. 为了解决数据量太大,单机没法处理的这个问题,所以一般我们提出一些大数据的一些解决方案来做
4. 了解一下:大数据的背景、大数据中在人工智能中常见的一些技术点;掌握在hadoop、spark的上做大数据的人工智能开发。
5. 我们的目的不是大数据架构师、大数据的运维运维工程师…;我们只关注如何在大数据框架上做一个开发。
6. 特别注意:分布式开发和单机的开发模式是一模一样的,没有任何区别!!
1.2 软件版本:
强调:因为你只是在大数据平台上做机器学习开发,所以没必要选那么新的版本,建议求稳 ==> 因为很多情况下,在机器学习这个领域中,大数据相关工具多个版本之间没有太大的差异。
JAVA版本:1.7&1.8(本人采用1.8)
Hadoop版本:2.5.0
Spark版本:1.6.x
Scala版本:2.10.x
Linux系统:Centos 6.5(本人采用Centos 7.6)
虚拟机:VMware(本人采用腾迅云)
2、HOSTS配置:
2.1 修改主机名(root权限下):
NETWORKING=yes
HOSTNAME= hadoop.tengxunyun.com
2.2 修改HOSTS(root权限):
修改HOSTS的原因主要有两点:
1、 hadoop内部机制需要通过主机名对主机进行访问。
2、 使用主机名对hadoop集群进行配置,看起来更加一目了然。
#修改每台机器的 /etc/hosts 文件
94.191.104.113 hadoop.tengxunyun.com
如果想要多个主机名路由到同一个 IP,只需要在 IP 后边添加多个主机名即可,多个主机名之间同样使用 TAB 键进行分隔,例如:
94.191.104.113 hadoop1 hadoop2 hadoop3
3、环境配置:
3.1 JDK1.8:
(推荐)用户只有一个(不要是root),hadoop-ss
创建两个目录
$ mkdir -p ~/software ~/modules
~ 表示当前用户的根目录
~/software 存放*.tag.gz
~/modules 放置安装软件
安装jdk:
$ tar -zxvf ~/software/jdk-8u211-linux-x64.tar.gz -C ~/modules/
卸载openJDK(root用户):
# rpm -qa | grep jdk
# rpm -e --nodeps XXX.rpm //如果存在jdk就进行不验证依赖进行卸载
配置环境变量:
$ vim ~/.bash_profile
export JAVA_HOME=/home/hadoop-ss/modules/ jdk1.8.0_211
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
安装OK
使配置生效:
$ source ~/.bash_profile
Linux 防火墙(root用户):
not running
关闭开机启动防火墙:
关闭安全子系统:
SELINUX=disabled
3.2 配置Hadoop:
Hadoop:
Apache Hadoop是存储和处理大数据的开源软件框架,可跨服务器执行分布式并行处理数据,且能够无限制地扩展。基于其可扩展性、灵活性、高容错性和低成本性,许多云解决方案供应商、金融机构和企业都使用 Hadoop im满足大数据处理需求。Hadoop Hadoop Distributed File System(hdfs)Yet Another Resource Negotiator(YARN)&I Mapreduce (Mapr).
HDFS:
HDFS是 Hadoop独有的文件系统,旨在实现可扩展性,在超过千兆字节数据的 Hadoop群集的多个节点进行大量文件存储。群集中的数据被分割成更小的128兆字节数据块,分布在整个群集中。Mapreduce数据处理功能在较大数据集的较小子集中执行,从而提供大数据处理所需的可扩展性。S文件系统使用TCP/IP套接字通信,通过网络将数据作为一个大文件系统处理。
YARN:
YARN是一个资源管理和调度平台,它管理在Hadoop群集运行的应用程序的CPU内存和存储器。YARN包含负责以下内容的组件:遵守队列容量和用户限制等约束条件的同时,在同一群集内运行的应用间分配资源;基于每个应用的资源需求调度任务;从所述调度器协商适当的资源;跟踪和监视正在运行的应用程
序及其资源使用情况的进度。
Mapreduce:
Mapreduce Hadoop软件编程范例。对于开发人员, Mapreduce Hadoop最重要的编程组件。Mapreduce由两个函数map和reduce 组成。Map函数处理键值对,生成中间键值对;reduce函数合并所有相同的中间值,生成结果。 Mapreduce将数据和处理软件相结合,消除了通过网络检索移动数据的需求。目前MapReduce Java诸如SQL和Python等其他语言,可以用Hadoop streaming工具实现。
$HADOOP_HOME—hadoop的安装目录
解压安装hadoop【注意上传和解压过程中的用户权限问题】
$ tar -zxvf ~/software/hadoop-2.5.0-cdh5.3.6.tar.gz -C ~/modules/
配置环境变量:
$ vim ~/.bash_profile
export HADOOP_HOME=/home/hadoop-ss/modules/hadoop-2.5.0-cdh5.3.6
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
$ source ~/.bash_profile
给Hadoop添加JDK依赖:
$ vim KaTeX parse error: Expected 'EOF', got '#' at position 39: …hadoop-env.sh #̲export JAVA_HOM…{JAVA_HOME}
export JAVA_HOME=/home/hadoop-ss/modules/jdk1.8.0_211
配置HDFS相关内容:
$ mkdir $HADOOP_HOME/data
$ vim $HADOOP_HOME/etc/hadoop/core-site.xml
1)core-site.xml
=core-site.xml=======
fs.defaultFS
hdfs://hadoop.tengxunyun.com:8020
hadoop.tmp.dir
/home/hadoop-ss/modules/hadoop-2.5.0-cdh5.3.6/data/tmp
$ vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
2)hdfs-site.xml
=hdfs-site.xml
dfs.replication
1
dfs.permissions.enabled
false
dfs.http.address
0.0.0.0:50070
给定DataNode节点位置(一行一个DataNode的主机名):
备注:完全分布式中,slaves文件中,是每行一个DataNode的主机名,这个是Hadoop的配置的唯一区别。
$ vim $HADOOP_HOME/etc/hadoop/slaves
hadoop.tengxunyun.com
配置MapReduce相关配置:
$ cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml(一起)
$ vim $HADOOP_HOME/etc/hadoop/mapred-site.xml
=mapred-site.xml
mapreduce.framework.name
yarn
配置Yarn相关配置:
$ vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
=yarn-site.xml===
yarn.resourcemanager.hostname
hadoop.tengxunyun.com
yarn.nodemanager.aux-services
mapreduce_shuffle
格式化namenode:
只能格式化一遍,不要重复格式化(如果重复格式化,需要删除 H A D O O P H O M E / d a t a 文 件 夹 下 所 有 内 容 ) 添 加 环 境 变 量 后 执 行 如 下 代 码 : ( 可 以 在 HADOOP_HOME/data文件夹下所有内容) 添加环境变量后执行如下代码:(可以在 HADOOPHOME/data文件夹下所有内容)添加环境变量后执行如下代码:(可以在HADOOP_HOME/data/tmp文件夹下看到dfs文件夹)
$ hdfs namenode -format
18/05/31 09:33:05 INFO common.Storage: Storage directory /home/hadoop/modules/hadoop-2.5.0-cdh5.3.6/data/tmp/dfs/name has been successfully formatted.
启动HDFS:
添加环境变量后执行如下代码:
启动命令:
$ hadoop-daemon.sh start namenode //启动namenode进程
$ hadoop-daemon.sh start datanode //启动当前机器上的datanode
$ hadoop-daemons.sh start datanode //启动所有机器上的datanode或者start-dfs.sh // 启动namenode+datanode进程
关闭命令:
$ hadoop-daemon.sh stop namenode //关闭namenode进程
$ hadoop-daemon.sh stop datanode //关闭当前机器上的datanode
$ hadoop-daemons.sh stop datanode//关闭所有机器上的datanode或者stop-dfs.sh // 关闭namenode+datanode进程
Web界面
http://hadoop.tengxunyun.com:50070/dfshealth.html#tab-overview
HDFS相关命令(添加环境变量):
$ hdfs dfs -ls /
$ hdfs dfs -mkdir /test
$ hdfs dfs -mkdir -p /test1/input
$ hdfs dfs -rmdir /test1/input
$ hdfs dfs -put ~/software/jdk-8u211-linux-x64.tar.gz /test
$ vim wc.txt
hadoop spark hbase spark
hadoop spark hbase spark hive
hive hbase spark
$ hdfs dfs -mkdir -p /test/input
$ hdfs dfs -put ./wc.txt /test/input
$ hdfs dfs -text /test/input/wc.txt
$ hdfs dfs -get /test/input/wc.txt ./wc2.txt
启动Yarn:
$ hadoop-daemon.sh start namenode(必须启动)
$ hadoop-daemons.sh start datanode(必须启动)
$ yarn-daemon.sh start resourcemanager
$ yarn-daemons.sh start nodemanager
或者
$ start-dfs.sh
$ start-yarn.sh
检测YARN:
$ jps
24672 DataNode
25341 ResourceManager
25751 Jps
24561 NameNode
25624 NodeManager
Web界面:
http://hadoop.tengxunyun.com:8088/cluster
MapReduce测试:
查看执行结果
$ hdfs dfs -text /test/output02/*
Redis安装:
tar -zxvf ~/software/redis-5.0.5.tar.gz -C ~/modules/
cd redis-5.0.5
make
启动:
cd src
./redis-server