hadoop集群搭建(hadoop集群搭建心得体会)
本篇文章给大家谈谈hadoop集群搭建,以及hadoop集群搭建心得体会对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、基于docker搭建hadoop跨主机集群
- 2、怎么搭建两个hadoop集群的测试环境
- 3、hadoop集群搭建时hadoop. env文件只能读怎么办?
- 4、VMware搭建完全分布式Hadoop集群
- 5、hadoop集群搭建(Hadoop 3.1.3 /Hive 3.1.2/Spark 3.0.0)
- 6、搭建hadoop集群,常用配置文件是什么,以及配置哪些属性
基于docker搭建hadoop跨主机集群
摘要:本文是基于docker 17.09.0搭建的hadoop 2.7.2 分布式跨主机集群,集群规余山模为一个master和两个salve,一共使用三台物理主机(两台或者多台物理机均可模拟),集群网络使用的是docker swarm搭建。
备注:中文社区中相关资料极少,相关资料请袜孝直接翻阅 官方文档
运行之后会有如下信息提示
进入slave1中,运行如下命令:
同样进入slave2中,运行相同命令
这样,节点slave1 slave2就加入了master的swarm网络了。其中运行的命令即为第二步中创建完网络提示的信息。
观察上一步我们发现, hadoop-master容器启动在master主机上。我们进入到master。
自此,使用docker的跨主机的hadoop集群搭建完成。
问题描述:笔者在搭建过程中碰到了这个问题,docker容器hadoop-master和hadoop-slave1,hadoop-slave2在一个swarm网络中,能够互相ping通,但竖好中是在ssh登录的时候出现 connection time out 异常,等了很久最后连接超时,也没有报其他问题。笔者在碰到这个问题的时候,找到的原因是物理主机slave1,slave2的防火墙没有关,直接截拦了对容器内部的ssh访问。
解决方案:
[img]怎么搭建两个hadoop集群的测试环境
环境配置:
虚拟机:
vmware workstation 12
系统:
ubuntu 16.04 LTS(推荐使用原版,不要用kylin)
节点: 192.168.159.132 master 192.168.159.134 node1 汪派袜 192.168.159.137 node2
jdk-8u101-Linux-x64.gz (Java )hadoop-2.7.3.tar.gz (Hadoop 包)
安装步骤:
1、安装虚拟机系统,并进行准备工作(可安装一个然后克隆)
2.修改各个虚拟机的hostname和host
3.创建用户组和用户
4、配置虚拟机网络,使虚拟机系统之间以及和host主机之间可以通过相互ping通。
5.安装困激jdk和配置环境变量,检查是否配置成功
6、配置ssh,实现节点间的无密码登录 ssh node1/2指令验证时候成功
7、master配置hadoop,并将hadoop文件传输到node节点
8、配置环境变量,并启动hadoop,检查是否安装成功,执行wordcount检查是否成功。
1.安装虚拟机
在VM上安装下载好的Ubuntu的系统,具体过程自行百度。可以安装完一个以后克隆,但是本人安装过程中遇到很多问题,经常需要删除虚拟机,重新羡槐安装,而被克隆的虚拟机不能删除,所以本人就用了很长时候,一个一个安装。
一共3台虚拟机:分配情况和IP地址如下:
(注:查看ip地址的指令 ifconfig)
安装虚拟机时可以设置静态IP,因为过程中常常遇到网络连接问题,ifconfig找不到IPV4地址。当然,也可以不设,默认分配。
192.168.159.132 master 192.168.159.134 node1 192.168.159.137 node2
2.修改虚拟机的hostname和hosts文件
以master上机器为例,打开终端,执行如下的操作,把hostname修改成master,hosts修改成如下所示的样子:
#修改hostname的指令:sudo gedit /etc/hostname
#修改hosts指令:sudo gedit /etc/hosts
#将以下内容添加到hosts中192.168.159.132 master192.168.159.134 node1192.168.159.137 node2
如下图所示:
同样地,在node1和node2机器上做相似的操作,分别更改主机名为node1和node2,然后把hosts文件更改和master一样。
3.创建用户和用户组(三台机器上都要操作)
1. 创建hadoop用户组
sudo addgroup hadoop
2. 创建hadoop用户
sudo adduser -ingroup hadoop hadoop
3. 给hadoop用户添加权限,打开/etc/sudoers文件
sudo gedit /etc/sudoers
按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL
4.检验各个主机之间能否连通
分别以刚刚创建的hadoop用户重新登录系统,以后的操作都以hadoop用户登录。
ping +主机名
分别在各个主机上执行上述指令,看是否能与其他主机连通。
出现下图代表能够连通:
如果都成功ping通,进行下面的操作。
5.安装jdk和配置环境变量
分别在每台主机上安装jdk,并配置环境变量。(嫌麻烦的前面可以安装完jdk后再克隆)
1)下载jdk安装包(自行百度),并将安装包拖入到虚拟机当中
2)通过cd命令进入到安装包的当前目录,利用如下命令进行解压缩。
tar -zxvf jdk.....(安装包名称)
3)利用如下命令将解压后的文件夹移到/usr目录下
#注意,这样移动到/usr以后就没有jdk1.8...这个目录了,是将这个目录下的所有文件全部移动到/usr/java下,mv jdk1.8...(文件夹名称) /usr/java
4)配置环境变量
sudo gedit /etc/profile
在末尾加上四行:
[plain] view plain copy print?
#java
export JAVA_HOME=/usr/java
export JRE_HOME=/usr/java/jre
export CLASSPATH=$JAVA_HOME/lib
export PATH=:$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
输入如下命令使配置生效:source /etc/profile
查看配置是否成功,
出现如上信息说明java配置成功。
6.配置SSH,实现节点间的无密码登录
本人在这一步经常出错,莫名其妙的错误,网上也找不到资料。需要自己多实验几次。
下面的 1.2.3在所有主机上都要做
1..安装ssh
[plain] view plain copy print?
sudo apt-get install openssh-server
已有ssh或者安装成功了的输入命令
[plain] view plain copy print?
ps -e | grep ssh
验证SSH是否成功安装输入
[plain] view plain copy print?
ssh localhost
出现以下提示说明安装成功
3.生成密钥Pair
ssh-keygen -t rsa
输入之后一直选择enter即可。生成的秘钥位于 ~/.ssh文件夹下。可用cd 命令进入查看。
4.在master上,导入authorized_keys
cat ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys
5.远程无密码登录(把master上的authorized_keys拷贝到其他主机的相应目录下)
#进入master的.ssh目录,执行复制操作
scp authorized_keys hadoop@node1:~/.ssh/
scp authorized_keys hadoop@node2:~/.ssh/
修改各台主机上authorized_keys文件的权限:
所有机器上,均执行命令:
chmod 600 .ssh/authorized_keys
完成之后,在master上执行下面操作,检查免密码登录是否成功。
ssh node1(node2)
7.master配置hadoop,然后将master的hadoop文件传送给node节点
1)解包移动
[plain] view plain copy print?
#解压hadoop包
tar -zxvf hadoop...
#将安装包移到/usr目录下
mv hadoop... /usr/hadoop
2)新建文件夹
[plain] view plain copy print?
#在/usr/hadoop目录下新建如下目录(root)
mkdir /dfs
mkdir /dfs/name
mkdir /dfs/data
mkdir /tmp
3)配置文件:hadoop-env.sh(文件都在/usr/hadoop/etc/hadoop中)
修改JAVA_HOME值(export JAVA_HOME=/usr/java)
4)配置文件:yarn-env.sh
修改JAVA_HOME值(export JAVA_HOME=/usr/java)
5)配置文件:slaves
将内容修改为:
node1
node2
6)配置文件:core-site.xml
[html] view plain copy print?
configuration
property
namefs.defaultFS/name
valuehdfs://master:9000/value
/property
property
nameio.file.buffer.size/name
value131072/value
/property
property
namehadoop.tmp.dir/name
valuefile:/usr/hadoop/tmp/value
descriptionAbase for other temporary directories./description
/property
/configuration
7)配置文件:hdfs-site.xml
[html] view plain copy print?
configuration
property
namedfs.namenode.secondary.http-address/name
valuemaster:9001/value
/property
property
namedfs.namenode.name.dir/name
valuefile:/usr/hadoop/dfs/name/value
/property
property
namedfs.datanode.data.dir/name
valuefile:/usr/hadoop/dfs/data/value
/property
property
namedfs.replication/name
value2/value
/property
property
namedfs.webhdfs.enabled/name
valuetrue/value
/property
/configuration
8)配置文件:mapred-site.xml
先创建然后编辑
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
gedit etc/hadoop/mapred-site.xml
[html] view plain copy print?
configuration
property
namemapreduce.framework.name/name
valueyarn/value
/property
property
namemapreduce.jobhistory.address/name
valuemaster:10020/value
/property
property
namemapreduce.jobhistory.webapp.address/name
valuemaster:19888/value
/property
/configuration
9)配置文件:yarn-site.xml
[html] view plain copy print?
configuration
property
nameyarn.nodemanager.aux-services/name
valuemapreduce_shuffle/value
/property
property
nameyarn.nodemanager.aux-services.mapreduce.shuffle.class/name
valueorg.apache.hadoop.mapred.ShuffleHandler/value
/property
property
nameyarn.resourcemanager.address/name
valuemaster:8032/value
/property
property
nameyarn.resourcemanager.scheduler.address/name
valuemaster:8030/value
/property
property
nameyarn.resourcemanager.resource-tracker.address/name
valuemaster:8031/value
/property
property
nameyarn.resourcemanager.admin.address/name
valuemaster:8033/value
/property
property
nameyarn.resourcemanager.webapp.address/name
valuemaster:8088/value
/property
/configuration
10)将hadoop传输到node1和node2 usr/hadoop目录,(如果传输时报错说 :权限拒绝,先把文件传送到非/usr目录下,然后在node上把这个文件再移动到/usr/hadoop)
scp -r /usr/hadoop hadoop@node1:/usr/hadoop
7、配置环境变量,并启动hadoop,检查是否安装成功
1)配置环境变量
#编辑/etc/profilesudo gedit /etc/profile#以上已经添加过java的环境变量,在后边添加就可以#hadoop export HADOOP_HOME=/opt/Hadoop/hadoop-2.7.2 export PATH=$PATH:$HADOOP_HOME/sbin export PATH=$PATH:$HADOOP_HOME/bin
执行
source /etc/profile
使文件生效。
2)启动hadoop,进入hadoop安装目录
bin/hdfs namenode -format
sbin/start-all.sh
3)启动后分别在master, node下输入jps查看进程
看到下面的结果,则表示成功。
Master:
node:
8.向hadoop集群系统提交第一个mapreduce任务(wordcount)
进入本地hadoop目录(/usr/hadoop)
1、 bin/hdfs dfs -mkdir -p /data/input在虚拟分布式文件系统上创建一个测试目录/data/input
2、 hdfs dfs -put README.txt /data/input 将当前目录下的README.txt 文件复制到虚拟分布式文件系统中
3、 bin/hdfs dfs-ls /data/input 查看文件系统中是否存在我们所复制的文件
如图操作:
3、 运行如下命令向hadoop提交单词统计任务
进入jar文件目录,执行下面的指令。
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /data/input /data/output/result
查看result,结果在result下面的part-r-00000中
hdfs dfs -cat /data/output/result/part-r-00000
自此,hadoop集群搭建成功!
hadoop集群搭建时hadoop. env文件只能读怎么办?
在Linux或Unix操作系统中,所有的程序文件都有权限设定,若遇到只读文件,那么就无法对其进行念卖编辑操作。
那么如何才能更改只读文件,让其具备写操作呢?笔者建议按以下步骤进行:
在hadoop配置目录下通过命令ls -l hadoop.env查看hadoop.env 当前键高扒的具有的权限项,若显示行开头是-r--或者-r-x,那么就表明所属文件无法进行修改;
这时可通过命令chmod u=rwx,go=rx hadoop.env,意思是该文件所属者具有读、写、执行权限,所属群组以及其他人却无法进行写操作;
再次通过ls -l hadoop.env查看,显示行开头变成了-rwx,这时就可以修稿昌改此文件啦。
小贴士:作为软件初学者,务必要把Linux或Unix各种操作命令掌握好,这样用的时候就会游刃有余。
VMware搭建完全分布式Hadoop集群
环境 :
修改名称和存储位置即可。
1.3.1 查看你PC上为VMware分配的IP地址段、子网掩码和网关。打开终端,输入如下命令:答伏搏
more /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf
添加以下信息:
重启机器即可完成静态IP的清祥修改。记得 ping 测试网络的连通性。
1.4.1 修改主机名称
sudo vim /etc/hostname
将文件修改为你的主机名,例如hadoop101
1.4.2 修改主机名和host的映射
sudo vim /etc/hosts
1.4.3 重启机器,并使用 ping hadoop10x 测试连通性。
如果你在第一台虚拟机上完成了伪分布模式的搭建,那么此时克隆的两台机器也同样拥有JDK和Hadoop。
scp命令
此时,如果只有一台机器完成了jdk和Hadoop的安装配置,我们可以使用 scp 命令完成数据的安全拷贝。
命令格式: scp -r 要拷贝的文件路径/名称 user@ip:目的路径/名称
rsync命令
与 scp 相同的还有一个命令时 rsync ,其主要用于备份和镜像。 rsync 做文件的复制要比 scp 的速度快, rsync 只对差异文件做更新。 scp 将所有文件都复制过去。使用方法和 scp 一样。
基本格式: rsync -rvl 源文件 目的路径
集群分发脚本
脚本sxync.sh可以更好的同步数据到其他机器上
这个很重要,后面的所有配置都是按照这个来的
3.2.1 配置hadoop-env.sh
3.2.2 配置hdfs-site.xml文件
3.3.1 配置yarn-env.sh
3.3.2 配置yarn-site.xml文件
3.4.1 配置mapred-env.sh
3.4.2 配置mapred-site.xml文件
xsync /opt/module/hadoop-x.x.x/
rm -rf data/ logs/
根据集群配置图,我们可以发现NameNode在hadoop102上,所以我们连接hadoop102,并执行如下命令:
bin/hdfs namenode -format
此时,不允许有任何错,否则格式化失败
4.4.1 在hadoop101上启动DataNode。
sbin/hadoop-daemon.sh start datanode
4.4.2 在hadoop102上启动NameNode和DataNode。
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode
4.4.3 在hadoop101上启动DataNode和SecondaryNode
sbin/hadoop-daemon.sh start datanode
sbin/hadoop-daemon.sh start secondarynamenode
在浏览器中输入 查看集群是否启动成功。如果本机的hosts里边没有Hadoop102到ip地址的映射,此时会无法访问,两种办法:第一,使用过ip:端厅迅口号访问;第二,在本机hosts文件里加入三个节点的主机名到ip地址的映射。
5.1.1 在hadoop101上使用指令ssh-keygen -t rsa生成公钥和密钥
6.2.1 在hadoop102上启动HDFS
sbin/start-dfs.sh
7.1 一个大文件个一个小文件
bin/hdfs dfs -put wcinput/wc.input /
bin/hdfs dfs -put /opt/software/hadoop-x.x.x.tar.gz
7.2 在浏览器中输入 查看上传结果:
大功告成,告别从入门到放弃!
hadoop集群搭建(Hadoop 3.1.3 /Hive 3.1.2/Spark 3.0.0)
完全分布式HA
服务器规划
技术栈包含
hdfs
hive on spark
presto
doris
superset
azkaban
kafka
fluent\flume
sqoop\kettle\flink-cdc
atlas
禁用swap/selinux
修改 IP/修改主机名/及主机名和 IP 地址的映射
时间同步/设置时区/自动时间同步
关闭防火墙
关闭SELINUX
新建用户
免密登录(先升级openssh)
发送密锋闹钥(dw01上执行)
授权
Tencent Kona v8.0.8-GA
腾讯开源的konaJDK,针对大数据场景下优化
解压并重命名至安装地址:/usr/local/java/
zookeeper-3.5.9
解压并重命名至安装地址:/usr/local/zookeeper
apache-hadoop-3.1.3 解压至安装地型基谈址:/usr/local/hadoop
修改环境变量
/usr/local/zookeeper/conf
启动zookeeper集群(每台执行)
三台服务器启动
格式卜碰化namenode(dw01执行)
启动namenode(dw01上执行)
在[nn2]和[nn3]上分别执行,同步 nn1 的元数据信息
启动nn2 nn3,分别执行
所有节点上启动datanode
将[nn1]切换为 Active
查看状态
配置yarn-site.xml
配置mapred-site.xml
分发配置文件,启动yarn(dw03 启动)
dw03节点
dw01节点
dw01执行
dw03执行
测试样例
启动脚本
HA切换namenode手动
修改yarn显示log的bug
搭建hadoop集群,常用配置文件是什么,以及配置哪些属性
一. 简介
参考了网上许多教程,最终把hadoop在ubuntu14.04中安装配置成功。下面就把详细的安装步骤叙述一下。我所使用的环境:两台ubuntu 14.04 64位的台式机,hadoop选择2.7.1版本。(前边主要介绍单机版的配置,集群版是在单机版的基础上,主要是配置文件有所不同,后边会有详细说明)
二. 准备工作
2.1 创建用户
创建用户,并为其添加root权限,经过亲自验证下面这种方法比较好。
1 sudo adduser hadoop2 sudo vim /etc/sudoers3 # 修改内容如下:4 root ALL = (ALL)ALL5 hadoop ALL = (ALL)ALL
给hadoop用户创建目录,并添加到sudo用户组中,命令如下:
1 sudo chown hadoop /home/hadoop2 # 添加到sudo用户组3 sudo adduser hadoop sudo
最后注销雀肆当前用户,使用新创建的hadoop用户登陆。
2.2 安装ssh服务
ubuntu中默认是没有装ssh server的(只有ssh client),所以先运行以下命令安装openssh-server。安装过程轻松加愉快~
sudo apt-get install ssh openssh-server
2.3 配置ssh无密码登陆
直接上代码:执行完下边的代码就可以直接棚皮登陆了(可以运行ssh localhost进行验证)
1 cd ~/.ssh# 如果找不到这个文件夹,先执行一下 "ssh localhost"2 ssh-keygen -t rsa3 cp id_rsa.pub authorized_keys
注意:
这里实现的是无密登陆自己,只适用与hadoop单机环境。如果配置Hadoop集群设置Master与Slave的SSH无密登陆可
三. 安装过程
3.1 下载hadoop安装顷和轿包
有两种下载方式:
1. 直接去官网下载:
2. 使用wget命令下载:
3.2 配置hadoop
1. 解压下载的hadoop安装包,并修改配置文件。我的解压目录是(/home/hadoop/hadoop-2.7.1),即进入/home/hadoop/文件夹下执行下面的解压缩命令。
tar -zxvf hadoop-2.7.1.tar.gz
2. 修改配置文件:(hadoop2.7.1/etc/hadoop/)目录下,hadoop-env.sh,core-site.xml,mapred-site.xml.template,hdfs-site.xml。
(1). core-site.xml 配置:其中的hadoop.tmp.dir的路径可以根据自己的习惯进行设置。
configurationpropertynamehadoop.tmp.dir/namevaluefile:/home/hadoop/hadoop/tmp/valuedescriptionAbase for other temporary directories./description/propertypropertynamefs.defaultFS/namevaluehdfs://localhost:9000/value/property/configuration
(2). mapred-site.xml.template配置:
configurationpropertynamemapred.job.tracker/namevaluelocalhost:9001/value/property/configuration
(3). hdfs-site.xml配置: 其中dfs.namenode.name.dir和dfs.datanode.data.dir的路径可以自由设置,最好在hadoop.tmp.dir的目录下面。
注意:如果运行Hadoop的时候发现找不到jdk,可以直接将jdk的路径放置在hadoop-env.sh里面,具体如下:
export JAVA_HOME="/opt/java_file/jdk1.7.0_79",即安装java时的路径。
configurationpropertynamedfs.replication/namevalue1/value/propertypropertynamedfs.namenode.name.dir/namevaluefile:/home/hadoop/hadoop/tmp/dfs/name/value/propertypropertynamedfs.datanode.data.dir/namevaluefile:/home/hadoop/hadoop/tmp/dfs/data/value/property/configuration
配置完成后运行hadoop。
四. 运行hadoop
4.1 初始化HDFS系统
在hadop2.7.1目录下执行命令:
bin/hdfs namenode -format
出现如下结果说明初始化成功。
4.2 开启 NameNode 和 DataNode 守护进程
在hadop2.7.1目录下执行命令:
sbin/start-dfs.sh
成功的截图如下:
4.3 使用jps命令查看进程信息:
若出现如图所示结果,则说明DataNode和NameNode都已经开启。
4.4 查看web界面
在浏览器中输入 ,即可查看相关信息,截图如下
至此,hadoop的环境就已经搭建好了。
五. 运行wordcount demo
1. 在本地新建一个文件,里面内容随便填:例如我在home/hadoop目录下新建了一个haha.txt文件,里面的内容为" hello world! "。
2. 然后在分布式文件系统(hdfs)中新建一个test文件夹,用于上传我们的测试文件haha.txt。在hadoop-2.7.1目录下运行命令:
# 在hdfs的根目录下建立了一个test目录
bin/hdfs dfs -mkdir /test
# 查看HDFS根目录下的目录结构
bin/hdfs dfs -ls /
结果如下:
3. 将本地haha.txt文件上传到test目录中;
# 上传
bin/hdfs dfs -put /home/hadoop/haha.txt /test/# 查看
bin/hdfs dfs -ls /test/
结果如下:
4. 运行wordcount demo;
# 将运行结果保存在/test/out目录下
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /test/haha.txt /test/out
# 查看/test/out目录下的文件
bin/hdfs dfs -ls /test/out
结果如下:
运行结果表示:运行成功,结果保存在part-r-00000中。
5. 查看运行结果;
# 查看part-r-00000中的运行结果
bin/hadoop fs -cat /test/out/part-r-00000
结果如下:
至此,wordcount demo 运行结束。
六. 总结
配置过程遇到了很多问题,最后都一一解决,收获很多,特此把这次配置的经验分享出来,方便想要配置hadoop环境的各位朋友~
(Hadoop集群安装配置过程基本和单机版是一样的,主要是在配置文件方面有所区别,以及ssh无密登陆要求master和slave能够互相无密登陆。
关于hadoop集群搭建和hadoop集群搭建心得体会的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。