文章目录

  • 1. 搭建HA的Hadoop集群
    • 1. 创建另外两个虚拟机
    • 2. 配置集群ssh免密码登录
    • 4. 安装Hadoop包
    • 5.另外两台机器上搭建hadoop
    • 6.启动hdfs集群
    • 7. hdfs管理界面(50070端口)
  • 2. Hive 0.13.1安装
    • 1. 安装hive包
    • 2. 安装mysql
  • 3. 安装zookeeper-3.4.5-cdh5.3.6
  • 4. kafka_2.9.2-0.8.1集群搭建
    • 1. 安装scala-2.11.4
    • 2. 安装Kafka包
    • 3. 启动kafka集群
  • 5. 安装flume

【Task 2】搭建Hadoop集群(3day)

  • 搭建HA的Hadoop集群并验证,3节点(1主2从),理解HA/Federation,并截图记录搭建过程
  • 阅读Google三大论文,并总结
  • Hadoop的作用(解决了什么问题)/运行模式/基础组件及架构
  • 学会阅读HDFS源码,并自己阅读一段HDFS的源码(推荐HDFS上传/下载过程)【可选】
  • Hadoop中各个组件的通信方式,RPC/Http等
  • 学会写WordCount(Java/Python-Hadoop Streaming),理解分布式/单机运行模式的区别
  • 理解MapReduce的执行过程
  • Yarn在Hadoop中的作用

1. 搭建HA的Hadoop集群

1. 创建另外两个虚拟机

为了搭建Hadoop集群,需要多个虚拟机实现,这里创建三个虚拟机,为了减少创建虚拟机的麻烦,我这里直接适用了虚拟机的克隆(复制)功能,复制完成后,修改网卡文件中的ip就可以了,由于第一个虚拟机设置的ip为192.168.1.105,复制后的两个分别为192.168.1.106和192.168.1.107。
同样地,分别连接上Xshell就可以了。
三个虚拟机的名字分别为SUN,SUN1,SUN2。

这里我发现我的三台虚拟机的主机名都一样, 都是[root@SUN],可能是复制过来的原因,因此为了有所区别,在这里改一下主机名,分别为spark1,spark2,spark3。
Centos7直接使用命令:hostnamectl;重点:重启生效

~]# hostnamectl set-hostname #####

如果是临时使用的,则使用~]# hostname ##### 即可;

2. 配置集群ssh免密码登录

  1. 在三台机器的/etc/hosts文件中,都配置对三台机器的p-hostname的映射。
vi /etc/hosts

都在Xshell中操作

2. 首先在三台机器上配置对本机的ssh免密登录,生成本机的公匙,过程中不断敲回车即可,ssh-keygen命令默认将公匙放在/root/.ssh目录下

ssh-keygen -t rsa


将公匙复制为authorized_keys文件,此时使用ssh连接本机就不需要输入密码了

cd /root/.ssh/
cp id_rsa.pub authorized_keys
ssh spark1

  1. 接着配置三台机器互相之间的ssh免密码登录。
    在spark1中,使用ssh-copy-id -i spark2匹配spark2,使用ssh-copy-id -i spark3匹配spark3;在spark2,spark3中,做法相同。(将本机的公匙拷贝到指定机器的authorized_keys文件中)

4. 安装Hadoop包

  1. 下载Hadoop包,下载地址:https://pan.baidu.com/s/1drI1TO
    参考:hadoop-2.5.0-cdh5.3.6集群搭建
    安装目录为:/usr/local
    将下载的hadoop-2.5.0-cdh5.3.6.tar.gz,上传到/usr/local目录下。
  2. 将hadoop包进行解压缩
tar -zxvf hadoop-2.5.0-cdh5.3.6.tar.gz
  1. 对hadoop目录进行重命名
mv hadoop-2.5.0-cdh5.3.6 hadoop
  1. 配置hadoop相关环境变量
#配置环境变量
vi ~/.bashrc
#添加hadoop环境变量
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin/bin:$HADOOP_HOME/sbin#使配置的环境变量生效
source ~/.bashrc

这里特别说明下,由于我将jdk安装到了 /usr/lib/jvm下,所以我还需要对环境变量再进行修改。`

将上面一行改一下
export JAVA_HOME=/usr


5. 修改配置文件
以下配置文件在:/usr/local/hadoop/etc/hadoop/目录下

修改core-site.xml

cd hadoop/etc/hadoop
vi core-site.xml
<property><name>fs.default.name</name><value>hdfs://spark1:9000</value>
</property>

修改hdfs-site.xml

vi hdfs-site.xml
<property><name>dfs.name.dir</name><value>/usr/local/data/namenode</value>
</property>
<property><name>dfs.data.dir</name><value>/usr/local/data/datanode</value>
</property>
<property><name>dfs.tmp.dir</name><value>/usr/local/data/tmp</value>
</property>
<property><name>dfs.replication</name><value>2</value>
</property>

属性说明
dfs.replication:hdfs副本数。
总共3个节点,1个master,2个slave。所以设置成2个block副本

修改mapred-site.xml
重命名mapred-site.xml.template为mapred-site.xml

mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>

修改yarn-site.xml

vi yarn-site.xml
<property><name>yarn.resourcemanager.hostname</name><value>spark1</value>
</property>
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property>

修改slaves文件

vi slaves
spark2
spark3

5.另外两台机器上搭建hadoop

使用如上spark1上配置hadoop,在另外两台机器上搭建hadoop。可以使用scp命令将spark1上面的hadoop安装包和~/.bashrc配置文件都拷贝到spark2、spark3。

cd /usr/local
scp -r hadoop root@spark2:/usr/local
scp ~/.bashrc root@spark2:~/

在spark2上执行

配置环境的文件已经拷过来了。

接着在spark2上执行

#对.bashrc文件进行source,以让它生效。
source ~/.bashrc
#创建data目录。
mkdir /usr/local/data

将sparkproject1上的hadoop复制到spark3
按照上面同样的步骤,同样的方式将spark1上面的hadoop安装包和~/.bashrc配置文件都拷贝到spark3。

6.启动hdfs集群

格式化namenode
在spark1上执行以下命令

hdfs namenode -format

启动hdfs集群

start-dfs.sh

改bug改了好久,都是因为不认真,不过终于搞定了


7. hdfs管理界面(50070端口)

如果登录不上,可以在hdfs-site.xml中,添加开放端口的绑定IP:

<property><name>dfs.http.address</name><value>0.0.0.0:50070</value></property>

我这里无法用过spark1:50070连接,但是可以通过ip连接
Hadoop


测试hdfs

vi hello.txt
hello world
hdfs dfs -put hello.txt /hello.txt


上传成功

重点:一定要关闭linux防火墙

几个比较有用的命令
#查看端口连接情况
netstat -an|grep 50070
删除data下所有文件
rm -rf  /usr/local/data/
创建data目录
mkdir /usr/local/data/
开启所有进程
start-dfs.sh
关闭防火墙
systemctl stop firewalld.service
禁止防火墙开机启动
systemctl disable firewalld.service
yum install net-tools

8088端口
yarn

2. Hive 0.13.1安装

1. 安装hive包

  1. 下载后传输到、usr/local目录下
  2. 解压缩hive包:
tar -zxvf hive-0.13.1-cdh5.3.6.tar.gz
  1. 重命名hive目录
mv hive-0.13.1-cdh5.3.6 hive
  1. 配置hive相关的环境变量
vi ~/.bashrc
export JAVA_HOME=/usr
export HADOOP_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:HIVE_HONE/bin
source ~/.bashrc

2. 安装mysql

参考:黑桃

  1. 在spark1上安装mysql
#查看可用的内存
free
  1. 使用yum安装mysql server
yum install -y mysql-server
service mysqld start
chkconfig mysqld on

安装时提示No package mysql-server available.
百度解决方案:https://typecodes.com/web/centos7yuminstallmysql5.html
https://blog.csdn.net/gongchenupc/article/details/68066990
亲测有效

  1. 使用yum安装mysql connector
yum install -y mysql-connector-java
  1. 将mysql connectoor拷贝到hive的lib包中
cp /usr/share/java/mysql-connector-java.jar /usr/local/hive/lib
  1. 在mysql上创建hive元数据库,创建hive账号,并对hive进行授权
create database if not exists hive_metadata;
grant all privileges on hive_metadata.* to 'hive'@'%' identified by 'hive';
grant all privileges on hive_metadata.* to 'hive'@'localhost' identified by 'hive';
grant all privileges on hive_metadata.* to 'hive'@'spark1' identified by 'hive';
flush privileges;
use hive_metadata;
  1. 复制hive-default.xml.template为hive-site.xml
mv hive-default.xml.template hive-site.xml
<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://spark1:3306/hive_metadata?createDatabaseIfNotExist=true</value><description>JDBC connect string for a JDBC metastore</description>
</property>
<property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description>
</property>
<property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value><description>username to use against metastore database</description>
</property><property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value><description>password to use against metastore database</description>
</property>
  1. 配置hive-env.sh
mv hive-env.sh.template hive-env.sh
  1. 配置hive-config.sh
vi /usr/local/hive/bin/hive-config.sh
export JAVA_HOME=/usrexport HIVE_HOME=/usr/local/hiveexport HADOOP_HOME=/usr/local/hadoop

测试的时候出现了问题,找不到hive命令

使用echo $PATH来解决bash: command not found
找到配置文件 ~/.bashrc发现我把HIVE_HOME中的M写成了N,一直没发现,改过来就正常了。

9. 测试hive

创建一个空的users.txt文件

vi users.txt
hivecreate table users(id int, name string);load data local inpath '/usr/local/users.txt' into table users;select name from users;

3. 安装zookeeper-3.4.5-cdh5.3.6

1.将zookeeper-3.4.5-cdh5.3.6.tar.gz传输到/usr/local目录下

解压
tar zxvf zookeeper-3.4.5-cdh5.3.6.tar.gz
删除压缩包
rm -rf zookeeper-3.4.5-cdh5.3.6.tar.gz
重命名
mv zookeeper-3.4.5-cdh5.3.6 zk
  1. 配置环境变量
vi ~/.bashrcexport ZOOKEEPER_HOME=/usr/local/zk
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/binsource ~/.bashrc
  1. 配置zoo.cfg
cd zk/conf/mv zoo_sample.cfg zoo.cfgvi zoo.cfgdataDir=/usr/local/zk/data
在最后添加这三行
server.0=spark1:2888:3888
server.1=spark2:2888:3888
server.2=spark3:2888:3888
  1. 创建data目录
cd zk
mkdir data
cd datavi myid
文件中只写一个0
0

5.搭建zk集群
在另外两个节点上按照上述步骤配置Zookeeper,使用奢scp将zk和.bashrc拷贝到spark2和spark3上极客==即可
唯一的区别是spark2和spark3的标识号(myid)分别设置为1和2

scp -r zk root@spark2:/usr/local/scp ~/.bashrc root@spark2:~/

在spark2上查看是否拷贝成功了

cat ~/.bashrcsource ~/.bashrc
cd zk/data/
vi myid
将0改为1

现在已经把spark2改好了,同样的步骤改spark3就好了。

  1. 启动Zookeeper集群

先是在三台机器上执行:zkServer.sh start。
然后检查Zookeeper状态:zkServer.sh status,应该是一个leader,两个follwer。
jps看一下进程,是否启动了QuorumPeerMain。

4. kafka_2.9.2-0.8.1集群搭建

1. 安装scala-2.11.4

1.将scala-2.11.4.tgz传输到/usr/local目录下

解压
tar zxvf scala-2.11.4.tgz
删除压缩包
rm -rf scala-2.11.4.tgz
重命名
mv scala-2.11.4 scala
  1. 配置环境变量
vi ~/.bashrcexport SCALA_HOME=/usr/local/scala
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOOKEEPER_HOME=/bin:$SCALA_HOME/binsource ~/.bashrc
  1. 查看scala是否安装成功
scala -version
  1. 按照上述步骤在spark1和spark2上安装好scala,即使用scp将scala和./bashrc拷贝到spark2和spark3上即可。
scp -r scala root@spark2:/usr/local/scp ~/.bashrc root@spark2:~/

在spark2上查看是否拷贝成功了

cat ~/.bashrcsource ~/.bashrcscala -version

现在已经把spark2改好了,同样的步骤改spark3就好了。

2. 安装Kafka包

1.将kafka_2.9.2-0.8.1.tgz传输到/usr/local目录下

解压
tar zxvf kafka_2.9.2-0.8.1.tgz
删除压缩包
rm -rf kafka_2.9.2-0.8.1.tgz
重命名
mv kafka_2.9.2-0.8.1 kafka
  1. 配置kafka
vi /usr/local/kafka/config/server.properties
对文件中broker.id进行配置,依次增长的整数,0、1、2,集群中broker的唯一id
配置文件末尾有一个zookeeper.connect,将其改为
zookeeper.connect=192.168.1.105:2181,192.168.1.106::2181,192.168.1.107:2181
  1. 安装slf4j

将slf4j-1.7.26.zip直接在windows上解压缩,将里面的slf4j-nop–1.7.26.jar复制到kafka的libs目录下

mv slf4j-nop-1.7.26.jar kafka/libs/
  1. 搭建kafka集群

按照上述步骤在spark1和spark2上安装好kafka,即使用scp将scala和./bashrc拷贝到spark2和spark3上即可。唯一的区别是要将配置文件server.properties中的broker.id分别设置为1和2

scp -r kafka root@spark2:/usr/local/vi /usr/local/kafka/config/server.properties
将broker.id设置为1


现在已经把spark2改好了,同样的步骤改spark3就好了。

3. 启动kafka集群

  1. 解决kafka Unrecognized VM option 'UserCompressedO ops’问题
vi /usr/local/kafka/bin/kafka-run-class.sh

将上面这个文件中有一个#JVM performance options,
将里面的 -XX:+UserCompressedO ops删去即可,注意要将三台机器都按照同样的方法删去
2. 在三台机器上执行下面命令

先进入kafka目录
cd /usr/local/kafka
开始启动
nohup bin/kafka-server-start.sh config/server.properties &
查看文件
cat nohup.out
查看jps中kafka是否启动


没问题!

5. 安装flume

1.将scala-2.11.4.tgz传输到/usr/local目录下

解压
tar zxvf flume-ng-1.5.0-cdh5.3.6.tar.gz
删除压缩包
rm -rf flume-ng-1.5.0-cdh5.3.6.tar.gz
重命名
mv apache-flume-1.5.0-cdh5.3.6-bin flume
  1. 配置scala相关的环境变量
vi ~/.bashrcexport FLUME_HOME=/usr/local/scalaflume
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOOKEEPER_HOME=/bin:$SCALA_HOME/bin:$FLUME_HOME/binsource ~/.bashrc
  1. 修改flume配置文件
cd flume/conf/
mv flume-conf.properties.template flume-conf.properties
vi flume-conf.properties

配置时需要修改的内容

#配置agent
agent1.sources = source1
agent1.sinks = sink1
agent1.channels = channel1#配置source
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir=/usr/local/logs
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader=false
agent1.sources.source1.intercepters=i1
agent1.sources.source1.intercepters.i1.type=timestamp#配置channel
agent1.channels.channel1.type = file
agent1.channels.channel1.checkpointDir = /usr/local/logs_tmp_cp
agent1.channels.channel1.dataDirs = /usr/local/logs_tmp#配置sink
agent1.sinks.sink1.type = hdfs
agent1.sinks.sink1.hdfs.path = hdfs://spark1:9000/logs
agent1.sinks.sink1.hdfs.fileType = Datastream
agent1.sinks.sink1.hdfs.writeFormae = TEXT
agent1.sinks.sink1.hdfs.rollInterval = 1
agent1.sinks.sink1.channel = channel1
agent1.sinks.sink1.hdfs.filePrefix = %y-%m-%d

配置agent

source这一部分删除

配置成下面这样

channel配置

配置sink

4. 创建需要的文件夹

cd /usr/local
mkdir logs
hdfs dfs -mkdir /logs
hdfs dfs -ls /
  1. 启动flume-agent
flume-ng agent -n agent1 -c conf -f/usr/local/flume/conf/flume-conf.properties -Dflume.root.logger=DEBUG.console
  1. 测试flume
    新建一份文件,移动到/usr/local/logs目录下,flume就会自动上传到HDFS的/logs目录中。

    我这里报错了,需要在配置文件中添加一行命令
agent1.sinks.sink1.hdfs.useLocalTimeStamp = true

如下图所示

测试成功

搞定

搭建Hadoop集群(二)相关推荐

  1. 华为云Centos7搭建hadoop集群二:yum源替换,ssh免密处理,hadoop用户sudo

    华为云Centos7搭建hadoop集群二:yum源替换,ssh免密处理,hadoop用户sudo 新建hadoop用户并设置密码,密码不要设置为简单的123456等,我这里已经创建过了hadoop用 ...

  2. mac搭建hadoop集群二之hadoop安装

    上一篇我们已经准备好三台虚拟机,计划一主两从搭建hadoop集群.没安装的可以参考一下. 虚拟机安装传送门:mac搭建hadoop集群之虚拟机安装 集群规划 主机 角色 node1 NN DN RM ...

  3. Hadoop(二)搭建Hadoop集群

    在了解Hadoo基础之后,借助于docker快速实现虚拟化,搭建Hadoop集群,进一步了解Hadoop,实地测试,实地操作,更进一步的了解Hadoop. 首先需要了解Hadoop的各个模块概念已经功 ...

  4. Hadoop实战(二) 搭建Hadoop集群

    搭建Hadoop集群 安装SSH并设置无密码登录 查看有没有ssh: rpm -qa | grep ssh 没有则安装: yum install openssh-server SSH命令需要安装客户端 ...

  5. 华为云 和 阿里云 跨服务器搭建Hadoop集群

    目录 华为云 和 阿里云 跨服务器搭建Hadoop集群 说明 期间遇到的问题 CentOS6 7 8更换阿里yum源 修改服务器名称 安装JDK 安装Hadoop 编写集群分发脚本 xsync scp ...

  6. Docker学习七:使用docker搭建Hadoop集群

    本博客简单分享了如何在Docker上搭建Hadoop集群,我的电脑是Ubuntu20,听同学说wsl2有些命令不对,所以建议在虚拟机里按照Ubuntu或者直接安装双系统吧 Docker学习一:Dock ...

  7. 微信棋牌源码虚拟机搭建Hadoop集群

    虚拟机搭建Hadoop集群 安装包准备 操作系统:ubuntu-16.04.3-desktop-amd64.iso 软件包:VirtualBox 安装包:hadoop-3.0.0.tar.gz,jdk ...

  8. 利用云服务器搭建hadoop集群

    利用云服务器搭建hadoop集群 测试连接 一. Linux配置 二. 3台服务器免密码登录 1. 三台机器生成公钥与私钥: 2. 拷贝公钥到同一台机器 3. 复制第一台机器的认证到其他机器 4. 通 ...

  9. 利用闲置电脑安装虚拟机搭建hadoop集群

    文章目录 前言 一.虚拟机环境的准备 二.连接虚拟机上的集群 1.整理需要连接的端口 2.配置VMware上虚拟机的端口转发 3.测试连接 总结 前言 本人刚开始学习大数据,记录自己的一些学习笔记.大 ...

  10. 三台Ubuntu虚拟机搭建 Hadoop集群 (第一次搭)

    最近因为要搭Hadoop集群,确实花了好大的心血在里面,因为我的Linux也是前两天速成的,好多东西都还是边查资料边搭.但我最终确实成功了,留了一点点小问题在里面.(当Hadoop集群start-al ...

最新文章

  1. 用狄拉克函数来构造非光滑函数的光滑近似
  2. 计算机视觉各领域前沿算法积累
  3. 如何把一个软件嵌入另一个软件_新增一个软件一个游戏
  4. 2016 ACM/ICPC 沈阳站 小结
  5. 计算机wind10切换桌面wind7系统,win10一键切回win7桌面方法_Win10桌面切换成Win7界面的方法...
  6. 电力LED时钟系统解决方案实现精确时间同步
  7. 可编程控制器PLC概述
  8. 个人/团队/企业/组织申请计算机软件著作权的流程
  9. 51单片机 普中V2 超声波测距 报警 显示 基于MCS51单片机的超声波测距模块的开发
  10. 任务管理器不显示gpu_Windows 10将在任务管理器中显示GPU温度
  11. KF、EKF、UKF、ESKF、PF对比
  12. websocket 技术文档
  13. 雅虎财经股票数据API获取
  14. HanLP极致简繁转换
  15. 最新防伪和代{过}{滤}理授权查询系统网站源码V1.3
  16. java方法调用之单分派与多分派(二)
  17. win10 电脑u盘读不出来怎么办
  18. HCL/异丙醇湿法处理制备洁净的InAs表面
  19. MySQL修改字段类型之modify
  20. JAVA 日期Date加减整理

热门文章

  1. PHP判断远程url是否有效的几种方法
  2. Android模拟器adb命令介绍
  3. Servlet+Jsp实现图片或文件的上传功能
  4. Java基础语法-方法的定义、调用以及static关键字的使用
  5. 基准对象object中的基础类型----元组 (五)
  6. JSON-RPC轻量级远程调用协议介绍及使用
  7. springboot在eclipse实现热部署
  8. 架构实战项目心得(一):技术和工具
  9. 消息队列的使用场景(转载c)
  10. poj3083Children of the Candy Corn(dfs+bfs)