基于OSS存储搭建Hadoop集群
简介
本文以Ubuntu操作系统为例,介绍基于Aliyun OSS的hadoop-3.0.0-beta1的集群环境搭建过程,示例的集群环境包括1个master和2个slave节点(slave1和slave2)。
请参考官方文档。
操作账户默认使用root
账户
注意:为了方便用户操作,减少错误发生,本文假定所有操作都是使用root
账户;
如果使用非root
,请根据自己的实际情况进行操作步骤的修订。
在各个节点上操作目录均为/home/hadoop
目录
所有下载软件包的存放和操作目录为:/home/hadoop
Java安装目录($JAVA_HOME)为:/home/hadoop/jdk1.8.0/
Hadoop安装目录($HADOOP_HOME)为:/home/hadoop/hadoop-3.0.0-beta1/
搭建Hadoop集群
设置集群所有节点的主机名
对所有节点设置主机名
在master节点上执行命令修改hostname: hostname master
在slave1节点上执行命令修改hostname: hostname slave1
在slave2节点上执行命令修改hostname: hostname slave2
对所有节点检查hostname是否修改成功:
在master节点上执行命令 hostname
返回 master。
在slave1节点上执行命令 hostname
返回 slave1。
在slave2节点上执行命令 hostname
返回 slave2。
对所有节点(master和slave)配置/etc/hosts
在各个节点上打开文件:vim /etc/hosts
在文件最后添加如下内容,注意下面的IP地址要替换为实际环境的局域网IP地址
:
192.168.1.1 master
192.168.1.2 slave1
192.168.1.3 slave2
对所有节点验证互联正确无误
在master节点上执行命令 ping slave1
和 ping slave2
,均正常ping通。
在slave1节点上执行命令 ping master
和 ping slave2
,均正常ping通。
在slave2节点上执行命令 ping master
和 ping slave1
,均正常ping通。
在所有节点上安装JAVA
在所有节点上创建Hadoop操作目录/home/hadoop
mkdir /home/hadoop
cd /home/hadoop
在所有节点下载安装JAVA
下载JDK jdk-8u144-linux-x64.tar.gz(可以根据实际情况来选择具体的JDK版本,本文以144为例), 将下载的JDK压缩包放到/home/hadoop
目录中,执行命令cd /home/hadoop
进入目录。
解压JDK tar -xzvf jdk-8u144-linux-x64.tar.gz
更改文件夹的名称:mv /home/hadoop/jdk1.8.0_144 /home/hadoop/jdk1.8.0
,确保Java放置在/home/hadoop/jdk1.8.0
这个固定目录中,方便下文操作。
在所有节点配置$JAVA_HOME环境变量
打开文件 vim /etc/profile
在文件末尾添加如下内容:
export JAVA_HOME=/home/hadoop/jdk1.8.0/
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
使配置生效 : source /etc/profile
验证配置是否生效 :
执行命令java -version
,返回正确版本。
执行命令which java
,返回正确结果:/home/hadoop/jdk1.8.0/bin/java
。
在所有节点上安装SSH,并配置SSH无密码登录
在所有节点安装SSH
查看是否已经安装SSH : ps -e | grep ssh
如果没有安装ssh,则执行该命令进行安装 : apt-get install openssh-server
验证ssh是否安装成功 :
ssh localhost
exit
在master节点上生成公钥,并配置从master无密码验证登录所有节点
在master节点进入~/.ssh/
目录并生成公钥,并将id_rsa.pub
内容复制到所有节点的authorized_keys
文件中。
注意:若某个节点没有~/.ssh/
目录,请先执行一次ssh localhost
。执行ssh-keygen
命令时遇到提示信息,如果要求输入y或yes
的则输入y或yes
,其他的提示可以默认敲回车
。
cd ~/.ssh/
ssh-keygen -t rsacp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keysscp ~/.ssh/id_rsa.pub root@slave1:~/.ssh/authorized_keysscp ~/.ssh/id_rsa.pub root@slave2:~/.ssh/authorized_keys
在master节点上验证SSH配置正确无误
在master节点执行如下命令,不再提示输入密码,说明SSH配置OK了。
ssh master
exitssh slave1
exitssh slave2
exit
在master节点上安装Hadoop
Hadoop-3.0.0-beta1官方下载地址: http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.0.0-beta1/
在master节点进入操作目录: cd /home/hadoop/
下载 wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.0.0-beta1/hadoop-3.0.0-beta1.tar.gz
解压 tar -xzvf hadoop-3.0.0-beta1.tar.gz
验证 ls /home/hadoop/hadoop-3.0.0-beta1
,返回Hadoop目录的文件列表。
在master节点上配置Hadoop环境
在master节点上进行Hadoop基本配置
在master节点上配置$HADOOP_HOME等环境变量
在master节点打开文件: vim /etc/profile
在文件末尾添加如下内容;注意:如果已经存在重复的export变量内容,则将原来的删掉:
export JAVA_HOME=/home/hadoop/jdk1.8.0/
export JRE_HOME=$JAVA_HOME/jre/export HADOOP_HOME=/home/hadoop/hadoop-3.0.0-beta1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/binexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$HADOOP_HOME/share/hadoop/tools/lib/hadoop-aliyun-3.0.0-beta1.jar:$HADOOP_HOME/share/hadoop/common/hadoop-common-3.0.0-beta1.jar:$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-3.0.0-beta1.jarexport HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_NODEMANAGER_USER=root
export HDFS_DATANODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
使配置生效: source /etc/profile
验证配置是否生效:
执行命令echo $JAVA_HOME
,返回/home/hadoop/jdk1.8.0/
;
执行命令echo $HADOOP_HOME
,返回/home/hadoop/hadoop-3.0.0-beta1
;
执行命令echo $HDFS_NAMENODE_USER
,返回root
;
在master节点进入HADOOP主目录,执行如下命令,创建相应文件夹。
cd $HADOOP_HOMEmkdir $HADOOP_HOME/tmp
mkdir $HADOOP_HOME/hdfs
mkdir $HADOOP_HOME/hdfs/name
mkdir $HADOOP_HOME/hdfs/data
在master节点上配置文件$HADOOP_HOME/etc/hadoop/hadoop-env.sh
打开文件: vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
;
在文件相应位置增加如下内容,请替换为真实的JAVA_HOME的值:
export JAVA_HOME=/home/hadoop/jdk1.8.0/
执行如下两条命令,返回的结果内容应该是统一的,都包含/home/hadoop/jdk1.8.0/
:
echo $JAVA_HOMEgrep JAVA_HOME $HADOOP_HOME/etc/hadoop/hadoop-env.sh | grep -v '#' | awk -F '=' '{print $2}'
在master节点上配置文件$HADOOP_HOME/etc/hadoop/core-site.xml
打开文件: vim $HADOOP_HOME/etc/hadoop/core-site.xml
在configuration
标签中添加:
<property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property><property><name>hadoop.tmp.dir</name><value>file:/home/hadoop/hadoop-3.0.0-beta1/tmp</value></property>
在master节点上配置文件$HADOOP_HOME/etc/hadoop/hdfs-site.xml
打开文件: vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
在configuration
标签中添加:
<property><name>dfs.replication</name><value>2</value></property><property><name>dfs.namenode.name.dir</name><value>file:/home/hadoop/hadoop-3.0.0-beta1/hdfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/home/hadoop/hadoop-3.0.0-beta1/hdfs/data</value></property><property><name>dfs.namenode.secondary.http-address</name><value>master:9001</value></property>
在master节点上配置文件$HADOOP_HOME/etc/hadoop/workers
打开文件: vim $HADOOP_HOME/etc/hadoop/workers
删除所有文件内容,根据实际节点情况,修改内容为:
slave1
slave2
在master节点上配置文件$HADOOP_HOME/etc/hadoop/mapred-site.xml
打开文件: vim $HADOOP_HOME/etc/hadoop/mapred-site.xml
在configuration
标签中添加:
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.application.classpath</name> <value>/home/hadoop/hadoop-3.0.0-beta1/etc/hadoop, /home/hadoop/hadoop-3.0.0-beta1/share/hadoop/common/*, /home/hadoop/hadoop-3.0.0-beta1/share/hadoop/common/lib/*, /home/hadoop/hadoop-3.0.0-beta1/share/hadoop/hdfs/*, /home/hadoop/hadoop-3.0.0-beta1/share/hadoop/hdfs/lib/*, /home/hadoop/hadoop-3.0.0-beta1/share/hadoop/mapreduce/*, /home/hadoop/hadoop-3.0.0-beta1/share/hadoop/mapreduce/lib/*, /home/hadoop/hadoop-3.0.0-beta1/share/hadoop/yarn/*, /home/hadoop/hadoop-3.0.0-beta1/share/hadoop/yarn/lib/*, /home/hadoop/hadoop-3.0.0-beta1/share/hadoop/tools/lib/*</value></property> <property><name>mapreduce.map.memory.mb</name><value>2048</value></property><property><name>mapreduce.reduce.memory.mb</name><value>2048</value></property>
在master节点上配置文件$HADOOP_HOME/etc/hadoop/yarn-site.xml
打开文件: vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
在configuration
标签中添加:
<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><property><name>yarn.resourcemanager.address</name><value>master:8032</value></property><property><name>yarn.resourcemanager.scheduler.address</name><value>master:8030</value></property><property><name>yarn.resourcemanager.resource-tracker.address</name><value>master:8031</value></property><property><name>yarn.resourcemanager.admin.address</name><value>master:8033</value></property><property><name>yarn.resourcemanager.webapp.address</name><value>master:8088</value></property>
在master节点上,将配置好的Hadoop文件夹从master复制到各个slave节点:slave1, slave2
前面章节已经在各个slave节点上创建hadoop工作目录:/home/hadoop
;请登录各个slave节点,执行如下命令,确保/home/hadoop
是一个存在的空目录
:
cd /home/hadoop/
ls /home/hadoop/
前面章节已经配置好master节点可以无密码SSH登录到各个slave节点,在master节点上执行如下命令,将Hadoop文件夹复制到各个slave节点:
scp -r $HADOOP_HOME root@slave1:/home/hadoop/ scp -r $HADOOP_HOME root@slave2:/home/hadoop/
在master节点上启动Hadoop
在master节点上格式化hdfs
在master节点,进入hadoop主目录,格式化hdfs :
cd $HADOOP_HOME
bin/hdfs namenode -format
在master节点上启动集群
在master节点,进入hadoop主目录,启动dfs :
cd $HADOOP_HOME
sbin/start-all.sh
在master节点上检查dfs能够正常工作
执行如下命令,在hdfs上创建文件夹my-test-dir
然后显示和删除该文件夹,均能够返回预期结果:
$HADOOP_HOME/bin/hadoop fs -mkdir /my-test-dir
$HADOOP_HOME/bin/hadoop fs -ls /
$HADOOP_HOME/bin/hadoop fs -rm -r /my-test-dir
在master节点上检查dfs的基本信息
$HADOOP_HOME/bin/hdfs dfsadmin -report$HADOOP_HOME/bin/hdfs dfsadmin -report | grep Hostname
能够正确报告文件系统的基本信息和统计信息。
在master节点上运行wordcount
验证多机环境的正确性
cd $HADOOP_HOME bin/hadoop fs -rm -r /output
bin/hadoop fs -mkdir /input
bin/hadoop fs -put $HADOOP_HOME/README.txt /input
bin/hadoop fs -ls /input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0-beta1.jar wordcount /input/README.txt /outputbin/hadoop fs -ls /output
bin/hadoop fs -cat /output/part-r-00000
然后分别执行如下两条命令,如果能够返回相同的统计结果, 则说明Hadoop多机环境下已经成功运行wordcount
:
$HADOOP_HOME/bin/hadoop fs -cat /output/part-r-00000 | grep hadoop | wc -l
grep hadoop $HADOOP_HOME/README.txt | wc -l
在master节点上停止集群
cd $HADOOP_HOME
sbin/stop-all.sh
在master节点上配置Hadoop的AliyunOSS数据源
安装好Hadoop并且调试验证环境之后,可以配置AliyunOSS数据源。
在master节点上检查Aliyun的Hadoop库文件
ls $HADOOP_HOME/share/hadoop/tools/lib
ll $HADOOP_HOME/share/hadoop/tools/lib/*aliyun*.jar
在目录$HADOOP_HOME/share/hadoop/tools/lib
下有如下jar包:
aliyun-sdk-oss-2.8.1.jar
hadoop-aliyun-3.0.0-beta1.jar
在master节点上配置文件$HADOOP_HOME/etc/hadoop/hadoop-env.sh
打开文件: vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
在相应位置增加如下内容:
export HADOOP_OPTIONAL_TOOLS="hadoop-aliyun"
执行如下命令,能够返回刚刚增加的文件内容:
grep HADOOP_OPTIONAL_TOOLS $HADOOP_HOME/etc/hadoop/hadoop-env.sh | grep -v '#'
在master节点上配置文件$HADOOP_HOME/etc/hadoop/core-site.xml
打开文件: vim $HADOOP_HOME/etc/hadoop/core-site.xml
在configuration
标签中加入如下内容:
注意把fs.oss.endpoint、fs.oss.accessKeyId、fs.oss.accessKeySecret属性对应的<value>的值设置为自己的具体内容。
<property><name>fs.oss.endpoint</name><value>YourEndpoint</value><description>Aliyun OSS endpoint to connect to. </description></property><property><name>fs.oss.accessKeyId</name><value>YourAccessKeyId</value><description>Aliyun access key ID</description></property><property><name>fs.oss.accessKeySecret</name><value>YourAccessKeySecret</value><description>Aliyun access key secret</description></property><property><name>fs.oss.impl</name><value>org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem</value></property><property><name>fs.oss.buffer.dir</name><value>/tmp/oss</value></property>
在master节点上运行wordcount
验证基于AliyunOSS数据源的Hadoop环境
在master节点上重启Hadoop
cd $HADOOP_HOME
sbin/stop-all.sh
sbin/start-all.sh
如果能够显示bucket的内容,则表示配置AliyunOSS数据源成功,注意:bucket-hadoop
需要替换为已经存在的真实的bucket名称。
$HADOOP_HOME/bin/hadoop fs -ls oss://bucket-hadoop/
$HADOOP_HOME/bin/hadoop fs -mkdir oss://bucket-hadoop/input
$HADOOP_HOME/bin/hadoop fs -ls oss://bucket-hadoop/$HADOOP_HOME/bin/hadoop fs -put $HADOOP_HOME/README.txt oss://bucket-hadoop/input/README.txt
$HADOOP_HOME/bin/hadoop fs -ls oss://bucket-hadoop/input
运行wordcount
进行验证
$HADOOP_HOME/bin/hadoop fs -rm -r oss://bucket-hadoop/output$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0-beta1.jar wordcount oss://bucket-hadoop/input/README.txt oss://bucket-hadoop/output$HADOOP_HOME/bin/hadoop fs -cat oss://bucket-hadoop/output/part-r-00000
然后分别执行如下两条命令,如果能够返回相同的统计结果, 则说明基于OSS的Hadoop多机环境下已经成功运行wordcount
:
$HADOOP_HOME/bin/hadoop fs -cat oss://bucket-hadoop/output/part-r-00000 | grep hadoop | wc -l
$HADOOP_HOME/bin/hadoop fs -cat oss://bucket-hadoop/input/README.txt | grep hadoop | wc -l
至此,基于Aliyun OSS的Hadoop多机环境已经搭建成功。
基于OSS存储搭建Hadoop集群相关推荐
- 基于阿里云服务器搭建hadoop集群:HDFS的namenode WEB访问9870端口打不开解决方法
基于阿里云服务器搭建hadoop集群:HDFS的namenode WEB访问9870端口打不开解决方法 以下是基于我所面临问题的解决办法. 1.在本地的c:windows/system32/dirve ...
- 微信棋牌源码虚拟机搭建Hadoop集群
虚拟机搭建Hadoop集群 安装包准备 操作系统:ubuntu-16.04.3-desktop-amd64.iso 软件包:VirtualBox 安装包:hadoop-3.0.0.tar.gz,jdk ...
- hadoop集群_Ambari搭建hadoop集群
Ambari搭建hadoop集群 Ambari提供了对Hadoop更加方便快捷的管理功能,主要包含: 通过一步一步的安装向导简化了集群供应. 预先配置好关键的运维指标(metrics),可以直接查看H ...
- Docker搭建hadoop集群
参考https://github.com/kiwenlau/hadoop-cluster-docker/blob/master/start-container.sh 因为之前在VMware上操作Had ...
- 华为云 和 阿里云 跨服务器搭建Hadoop集群
目录 华为云 和 阿里云 跨服务器搭建Hadoop集群 说明 期间遇到的问题 CentOS6 7 8更换阿里yum源 修改服务器名称 安装JDK 安装Hadoop 编写集群分发脚本 xsync scp ...
- 如何基于Docker快速搭建Elasticsearch集群?
如何基于Docker快速搭建Elasticsearch集群? Elasticsearch 作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息.所以第一步 ...
- 如何基于Jupyter notebook搭建Spark集群开发环境
摘要:本文介绍如何基于Jupyter notebook搭建Spark集群开发环境. 本文分享自华为云社区<基于Jupyter Notebook 搭建Spark集群开发环境>,作者:apr鹏 ...
- hadoop搭建_阿里云搭建Hadoop集群
1 前言 在讲述Hadoop集群搭建之前,首先要了解Hadoop和集群两个名词,Hadoop是由Apache基金会开发的分布式系统基础架构,简单理解就是大数据技术应用的基础.集群可以理解为多台装有ha ...
- 基于VMWare虚拟机搭建Linux集群
基于VMWare虚拟机搭建Linux集群 1.虚拟机的安装 2.下载CentOS系统 3.虚拟机安装CentOS系统 4.虚拟机和本机文件通信 5.虚拟机网络配置 6.本机物理机下载Xshell连接操 ...
最新文章
- java连接mongodb_java连接mongodb源码解读
- linux端口对外开放
- 【刘汝佳可运行代码】Ordering Tasks UVA - 10305【两种解法】
- 使用JFreeChart在网页上绘制平滑曲线
- 前魅族科技高级副总裁李楠:iPhone 11的工业设计完全崩盘
- 移动12.1号动感地带寻宝答案
- python入门经典100例-【python】编程语言入门经典100例--25
- 文本聚类python fcm_机器学习笔记----Fuzzy c-means(FCM)模糊聚类详解及matlab实现
- Atitit 个人 企业 政府 等组织 财政收入分类与提升途径attilax总结 v2
- 一位计算机牛人的心得,谈计算机和数学
- 国产13.56MHz读写器芯片Ci521替代兼容CV520
- 嵩天《Python数据分析与展示》实例1:图像的手绘效果
- 微信公众号图片上传和预览功能前端实现
- matlab centralize,智课雅思词汇---二十三、动词性后缀-ate-fy-ish-ize
- 工业大数据收集及预测建模方法(南京大学-宋哲博士分享)- 个人总结
- SQL“除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效“ 解决方法
- 我的翻转课堂教学实践
- 网上电子元器件采购商城:打破采购环节信息不对称难题,赋能企业高效协同管理
- oracle 抽样_[转载]利用ORACLE实现数据抽样
- 氧化锌@聚丙烯腈(ZnO@PAN)静电纺丝纳米纤维膜材料|金属有机框架材料ZIF-8@聚丙烯腈(ZIF-8@PAN)纳米纤维膜材料