重视网站商务通,开发公司采购招聘,中国十大最著名品牌,做一手房有哪些网站比较好啊第3章 Hadoop的安装和使用
3.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台#xff0c;为用户提供了系统底层细节透明的分布式基础架构。Hadoop是基于Java语言开发的#xff0c;具有很好的跨平台特性#xff0c;并且可以部署在廉价的计算机集群中。H…第3章 Hadoop的安装和使用
3.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台为用户提供了系统底层细节透明的分布式基础架构。Hadoop是基于Java语言开发的具有很好的跨平台特性并且可以部署在廉价的计算机集群中。Hadoop的核心是分布式文件系统Hadoop Distributed File SystemHDFS和MapReduce。 Apache Hadoop版本分为三代分别是Hadoop 1.0、Hadoop 2.0和Hadoop3.0。 除了免费开源的Apache Hadoop以外还有一些商业公司推出Hadoop的发行版。2008年Cloudera成为第一个Hadoop商业化公司并在2009年推出第一个Hadoop发行版。此后很多大公司也加入了做Hadoop产品化的行列比如MapR、Hortonworks、星环等。2018年10月Cloudera和Hortonworks宣布合并。一般而言商业化公司推出的Hadoop发行版也是以Apache Hadoop为基础但是前者比后者具有更好的易用性、更多的功能以及更高的性能。 3.2 安装Hadoop前的准备工作
3.2.1 创建hadoop用户
本教程全部采用hadoop用户登录Linux系统并为hadoop用户增加了管理员权限。在前面的“第2章 Linux系统的安装和使用”内容中已经介绍了hadoop用户创建和增加权限的方法请一定按照该方法创建hadoop用户并且使用hadoop用户登录Linux系统然后再开始下面的学习内容。本教程所有学习内容都是采用hadoop用户登录Linux系统。 3.2.2 更新APT
本教程第2章介绍了APT软件作用和更新方法为了确保Hadoop安装过程顺利进行建议按照第2章介绍的方法用hadoop用户登录Linux系统后打开一个终端执行下面命令更新APT软件
sudo apt-get update
3.2.3 安装SSH
Ubuntu默认已安装了SSH客户端因此这里还需要安装SSH服务端请在Linux的终端中执行以下命令
sudo apt-get install openssh-server
安装后可以使用如下命令登录本机
ssh localhost执行该命令后会出现如图3-1所示的提示信息(SSH首次登录提示)输入“yes”然后按提示输入密码hadoop就登录到本机了。 首先请输入命令“exit”退出刚才的SSH就回到了原先的终端窗口然后可以利用ssh-keygen生成密钥并将密钥加入到授权中命令如下
cd ~/.ssh/ # 若没有该目录请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示都按回车即可
cat ./id_rsa.pub ./authorized_keys # 加入授权此时再执行ssh localhost命令无需输入密码就可以直接登录了如图所示。 3.2.4 安装Java环境
执行如下命令创建“/usr/lib/jvm”目录用来存放JDK文件
cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件执行如下命令对安装文件进行解压缩
cd ~ #进入hadoop用户的主目录
cd Downloads
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm下面继续执行如下命令设置环境变量
vim ~/.bashrc上面命令使用vim编辑器打开了hadoop这个用户的环境变量配置文件请在这个文件的开头位置添加如下几行内容
export JAVA_HOME/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME${JAVA_HOME}/jre
export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH${JAVA_HOME}/bin:$PATH保存.bashrc文件并退出vim编辑器。然后继续执行如下命令让.bashrc文件的配置立即生效
source ~/.bashrc这时可以使用如下命令查看是否安装成功
java -version如果能够在屏幕上返回如下信息则说明安装成功 java version 1.8.0_162 Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode) 3.3 安装Hadoop
Hadoop包括三种安装模式
单机模式只在一台机器上运行存储是采用本地文件系统没有采用分布式文件系统HDFS
伪分布式模式存储采用分布式文件系统HDFS但是HDFS的名称节点和数据节点都在同一台机器上
分布式模式存储采用分布式文件系统HDFS而且HDFS的名称节点和数据节点位于不同机器上。 3.3.1 下载安装文件
本教程采用的Hadoop版本是3.1.3可以到Hadoop官网下载安装文件http://mirrors.cnnic.cn/apache/hadoop/common/
请使用hadoop用户登录Linux系统打开一个终端执行如下命令
sudo tar -zxf ~/下载/hadoop-3.1.3.tar.gz -C /usr/local # 解压到/usr/local中cd /usr/local/
sudo mv ./hadoop-3.1.3/ ./hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限Hadoop解压后即可使用可以输入如下命令来检查 Hadoop是否可用成功则会显示 Hadoop版本信息
cd /usr/local/hadoop
./bin/hadoop version3.3.2 单机模式配置
Hadoop默认模式为非分布式模式本地模式无需进行其他配置即可运行。Hadoop附带了丰富的例子运行如下命令可以查看所有例子
cd /usr/local/hadoop
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar
这里选择运行grep例子
cd /usr/local/hadoop
mkdir input
cp ./etc/hadoop/*.xml ./input # 将配置文件复制到input目录下./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output dfs[a-z.]cat ./output/* # 查看运行结果 3.3.3 伪分布式模式配置
1. 修改配置文件
修改以后core-site.xml文件的内容如下
vim /usr/local/hadoop/etc/hadoop/core-site.xmlconfigurationpropertynamehadoop.tmp.dir/namevaluefile:/usr/local/hadoop/tmp/valuedescriptionAbase for other temporary directories./description/propertypropertynamefs.defaultFS/namevaluehdfs://localhost:9000/value/property
/configuration 同样需要修改配置文件hdfs-site.xml修改后的内容如下
vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
configurationpropertynamedfs.replication/namevalue1/value/propertypropertynamedfs.namenode.name.dir/namevaluefile:/usr/local/hadoop/tmp/dfs/name/value/propertypropertynamedfs.datanode.data.dir/namevaluefile:/usr/local/hadoop/tmp/dfs/data/value/property
/configuration 2. 执行名称节点格式化
修改配置文件以后要执行名称节点的格式化命令如下
cd /usr/local/hadoop
./bin/hdfs namenode -format如果格式化成功会看到“successfully formatted”的提示信息 3. 启动Hadoop
执行下面命令启动Hadoop
cd /usr/local/hadoop
./sbin/start-dfs.sh #start-dfs.sh是个完整的可执行文件中间没有空格如果出现如图3-5所示的SSH提示输入yes即可 4
5. 使用Web界面查看HDFS信息 6. 运行Hadoop伪分布式实例
要使用HDFS首先需要在HDFS中创建用户目录本教程全部统一采用hadoop用户名登录Linux系统命令如下
cd /usr/local/hadoop
./bin/hdfs dfs -mkdir -p /user/hadoop接着需要把本地文件系统的“/usr/local/hadoop/etc/hadoop”目录中的所有xml文件作为输入文件复制到分布式文件系统HDFS中的“/user/hadoop/input”目录中命令如下
cd /usr/local/hadoop
./bin/hdfs dfs -mkdir input #在HDFS中创建hadoop用户对应的input目录
./bin/hdfs dfs -put ./etc/hadoop/*.xml input #把本地文件复制到HDFS中现在就可以运行Hadoop自带的grep程序命令如下
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output dfs[a-z.]运行结束后可以通过如下命令查看HDFS中的output文件夹中的内容
./bin/hdfs dfs -cat output/*执行结果如图所示 7. 关闭Hadoop
如果要关闭Hadoop可以执行下面命令
cd /usr/local/hadoop
./sbin/stop-dfs.sh8. 配置PATH变量
首先使用vim编辑器打开“~/.bashrc”这个文件然后在这个文件的最前面位置加入如下单独一行
export PATH$PATH:/usr/local/hadoop/sbin在后面的学习过程中如果要继续把其他命令的路径也加入到PATH变量中也需要继续修改“~/.bashrc”这个文件。当后面要继续加入新的路径时只要用英文冒号“:”隔开把新的路径加到后面即可比如如果要继续把“/usr/local/hadoop/bin”路径增加到PATH中只要继续追加到后面如下所示
export PATH$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin添加后执行命令“source ~/.bashrc”使设置生效。设置生效后在任何目录下启动Hadoop都只要直接输入start-dfs.sh命令即可同理停止Hadoop也只需要在任何目录下输入stop-dfs.sh命令即可。 3.3.4 分布式模式配置
Hadoop集群安装配置教程_Hadoop3.1.3_Ubuntu_厦大数据库实验室博客
Hadoop 集群的安装配置大致包括以下步骤
步骤1选定一台机器作为 Master
步骤2在Master节点上创建hadoop用户、安装SSH服务端、安装Java环境
步骤3在Master节点上安装Hadoop并完成配置
步骤4在其他Slave节点上创建hadoop用户、安装SSH服务端、安装Java环境
步骤5将Master节点上的“/usr/local/hadoop”目录复制到其他Slave节点上
步骤6在Master节点上开启Hadoop
1. 网络配置
假设集群所用的两个节点机器都位于同一个局域网内。如果两个节点使用的是虚拟机安装的Linux系统那么两者都需要更改网络连接方式为“桥接网卡”模式才能实现多个节点互连如下图所示。此外一定要确保各个节点的Mac地址不能相同否则会出现 IP冲突。如果是采用导入虚拟机镜像文件的方式安装Linux系统则有可能出现两台机器的MAC地址是相同的因为一台机器复制了另一台机器的配置因此需要改变机器的MAC地址如下图所示可以点击界面右边的“刷新”按钮随机生成 MAC 地址这样就可以让两台机器的MAC地址不同了。 网络配置完成以后可以查看一下机器的IP地址可以使用ifconfig命令查看。本教程在同一个局域网内部的两台机器的IP地址分别是192.168.1.121和192.168.1.122。 由于集群中有两台机器需要设置所以在接下来的操作中一定要注意区分Master节点和Slave节点。为了便于区分Master节点和Slave节点可以修改各个节点的主机名这样在Linux系统中打开一个终端以后在终端窗口的标题和命令行中都可以看到主机名就比较容易区分当前是对哪台机器进行操作。
在Ubuntu中我们在 Master 节点上执行如下命令修改主机名
sudo vim /etc/hostname打开这个文件以后里面就只有“dblab-VirtualBox”这一行内容可以直接删除并修改为“Master”注意是区分大小写的然后保存退出vim编辑器这样就完成了主机名的修改需要重启Linux系统才能看到主机名的变化。 执行如下命令打开并修改Master节点中的“/etc/hosts”文件
sudo vim /etc/hosts192.168.1.121 Master
192.168.1.122 Slave1 把Slave节点上的“/etc/hostname”文件中的主机名修改为“Slave1”
sudo vim /etc/hostname同时修改“/etc/hosts”的内容在hosts文件中增加如下两条IP和主机名映射关系
sudo vim /etc/hosts192.168.1.121 Master
192.168.1.122 Slave1 修改完成以后请重新启动Slave节点的Linux系统。
需要在各个节点上都执行如下命令测试是否相互ping得通如果ping不通后面就无法顺利配置成功
ping Master -c 3 # 只ping 3次就会停止否则要按Ctrlc中断ping命令
ping Slave1 -c 32. SSH无密码登录节点
必须要让Master节点可以SSH无密码登录到各个Slave节点上。首先生成Master节点的公匙如果之前已经生成过公钥必须要删除原来生成的公钥重新生成一次因为前面我们对主机名进行了修改。具体命令如下
cd ~/.ssh # 如果没有该目录先执行一次ssh localhost
rm ./id_rsa* # 删除之前生成的公匙如果已经存在
ssh-keygen -t rsa # 执行该命令后遇到提示信息一直按回车就可以为了让Master节点能够无密码SSH登录本机需要在Master节点上执行如下命令
cat ./id_rsa.pub ./authorized_keys完成后可以执行命令“ssh Master”来验证一下可能会遇到提示信息只要输入yes即可测试成功后请执行“exit”命令返回原来的终端。 接下来在Master节点将上公匙传输到Slave1节点
scp ~/.ssh/id_rsa.pub hadoopSlave1:/home/hadoop/接着在Slave1节点上将SSH公匙加入授权
mkdir ~/.ssh # 如果不存在该文件夹需先创建若已存在则忽略本命令
cat ~/id_rsa.pub ~/.ssh/authorized_keys
rm ~/id_rsa.pub # 用完以后就可以删掉如果有其他Slave节点也要执行将Master公匙传输到Slave节点以及在Slave节点上加入授权这两步操作。 这样在Master节点上就可以无密码SSH登录到各个Slave节点了可在Master节点上执行如下命令进行检验
ssh Slave1 【stop】 3. 配置PATH变量
首先执行命令“vim ~/.bashrc”也就是使用vim编辑器打开“~/.bashrc”文件然后在该文件最上面的位置加入下面一行内容
export PATH$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin4. 配置集群/分布式环境
在配置集群/分布式模式时需要修改“/usr/local/hadoop/etc/hadoop”目录下的配置文件这里仅设置正常启动所必须的设置项包括workers 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共5个
1修改文件workers
本教程让Master节点仅作为名称节点使用因此将workers文件中原来的localhost删除只添加如下一行内容
Slave12修改文件core-site.xml
请把core-site.xml文件修改为如下内容
configurationpropertynamefs.defaultFS/namevaluehdfs://Master:9000/value/propertypropertynamehadoop.tmp.dir/namevaluefile:/usr/local/hadoop/tmp/valuedescriptionAbase for other temporary directories./description/property
/configuration
3修改文件hdfs-site.xml
configurationpropertynamedfs.namenode.secondary.http-address/namevalueMaster:50090/value/propertypropertynamedfs.replication/namevalue1/value/propertypropertynamedfs.namenode.name.dir/namevaluefile:/usr/local/hadoop/tmp/dfs/name/value/propertypropertynamedfs.datanode.data.dir/namevaluefile:/usr/local/hadoop/tmp/dfs/data/value/property
/configuration
4修改文件mapred-site.xml
configurationpropertynamemapreduce.framework.name/namevalueyarn/value/propertypropertynamemapreduce.jobhistory.address/namevalueMaster:10020/value/propertypropertynamemapreduce.jobhistory.webapp.address/namevalueMaster:19888/value/propertyproperty
nameyarn.app.mapreduce.am.env/name
valueHADOOP_MAPRED_HOME/usr/local/hadoop/value
/property
property
namemapreduce.map.env/name
valueHADOOP_MAPRED_HOME/usr/local/hadoop/value
/property
property
namemapreduce.reduce.env/name
valueHADOOP_MAPRED_HOME/usr/local/hadoop/value
/property
/configuration
5修改文件 yarn-site.xml
configurationpropertynameyarn.resourcemanager.hostname/namevalueMaster/value/propertypropertynameyarn.nodemanager.aux-services/namevaluemapreduce_shuffle/value/property
/configuration
首先在Master节点上执行如下命令
cd /usr/local
sudo rm -r ./hadoop/tmp # 删除 Hadoop 临时文件
sudo rm -r ./hadoop/logs/* # 删除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop # 先压缩再复制
cd ~
scp ./hadoop.master.tar.gz Slave1:/home/hadoop然后在Slave1节点上执行如下命令
sudo rm -r /usr/local/hadoop # 删掉旧的如果存在
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/hadoop首次启动Hadoop集群时需要先在Master节点执行名称节点的格式化只需要执行这一次后面再启动Hadoop时不要再次格式化名称节点命令如下
hdfs namenode -format现在就可以启动Hadoop了启动需要在Master节点上进行执行如下命令
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver5. 执行分布式实例
执行分布式实例过程与伪分布式模式一样首先创建HDFS上的用户目录命令如下
hdfs dfs -mkdir -p /user/hadoop然后在HDFS中创建一个input目录并把“/usr/local/hadoop/etc/hadoop”目录中的配置文件作为输入文件复制到input目录中命令如下
hdfs dfs -mkdir input
hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input接着就可以运行 MapReduce 作业了命令如下
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output dfs[a-z.]最后关闭Hadoop集群需要在Master节点执行如下命令
stop-yarn.sh
stop-dfs.sh
mr-jobhistory-daemon.sh stop historyserver3.4 本章小结 Hadoop是当前流行的分布式计算框架在企业中得到了广泛的部署和应用。本章重点介绍如何安装Hadoop从而为后续章节开展HDFS和MapReduce编程实践奠定基础。 Hadoop是基于Java开发的需要运行在JVM中因此需要为Hadoop配置相应的Java环境。Hadoop包含三种安装模式即单机模式、伪分布式模式和分布式模式。本章分别介绍了三种不同模式的安装配置方法。在初学阶段建议采用伪分布式模式配置这样可以快速构建起Hadoop实战环境有效开展基础编程工作。