基于ubuntu,docker搭建hadoop,zookeeper,hbase

如果前面没搭建docker,详情请看这篇文章:https://abytelalala.cn/index.php/2024/06/24/ubentu%e4%bb%8e%e9%9b%b6%e5%bc%80%e5%a7%8b%e9%83%a8%e7%bd%b2docker/

nano /etc/docker/daemon.json
写入如下三行内容
{
  "registry-mirrors": ["https://docker.foreverlink.love/"]
}

service docker restart
docker info//验证成功替换成功没有
docker pull ubuntu:latest

docker run -it ubuntu:latest

apt-get update
apt update
apt upgrade

net-tools

apt install net-tools

java

apt-get install openjdk-8-jdk

安装包

下载安装包
hadoop-3.2.2.tar.gz,
hbase-2.5.8-bin.tar.gz,
apache-zookeeper-3.7.2-bin.tar.gz
拖动到mobaXterm的虚拟机页面目录

解压移动等操作

接下来操作需要再开一个新终端,保留之前的终端

su -
docker ps //查看指定的容器id
docker cp /home/cust/hadoop-3.2.2.tar.gz <指定容器id>:/usr/local/ //移动到docker里
docker cp /home/cust/hbase-2.5.8-bin.tar.gz <指定容器id>:/usr/local/
docker cp /home/cust/apache-zookeeper-3.7.2-bin.tar.gz <指定容器id>:/usr/local/ //这两个都同理

然后进入原容器的终端,输入如下命令

cd /usr/local
ls
//查看是否转移到这里来了

tar -zxvf hadoop-3.2.2.tar.gz
mv hadoop-3.2.2 /usr/local/hadoop
tar -zxvf apache-zookeeper-3.7.2-bin.tar.gz
mv apache-zookeeper-3.7.2-bin /usr/local/zookeeper
tar -zxvf hbase-2.5.8-bin.tar.gz
mv hbase-2.5.8 /usr/local/hbase //具体你们文件解压后是什么名字,具体用ls命令来查看修改

添加环境变量

apt install nano
nano /etc/profile

在/etc/profile添加如下内容

JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
HADOOP_HOME=/usr/local/hadoop
export PATH=$JAVA_HOME/bin:$PATH
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#root启动,添加以下环境
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin

ssh免密登入

apt-get update
apt-get install systemd
apt-get update --fix-missing
apt-get install openssh-server
ssh-keygen -t rsa //遇见输入密码什么的都回车
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

service ssh start
service ssh status
//检查一下sshd是否开启
ssh localhost
//运行完成会弹出一个问你第一次登陆是否的问题
//你要回答yes,不要只回答一个y

hadoop配置文件

在/usr/local/hadoop/etc/hadoop/文件夹下

hadoop-env.sh文件

加入:

# 显式声明java路径
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

core-site.xml文件

<configuration>
   <property>
       <name>fs.defaultFS</name>
       <value>hdfs://hadoop01:9000</value>
   </property>
   <!-- 指定hadoop运行时产生文件的存储路径 -->
   <property>
       <name>hadoop.tmp.dir</name>
  <!-- 配置到hadoop目录下temp文件夹 -->
       <value>file:/usr/local/hadoop/tmp</value>
   </property>
   <property>
       <name>hadoop.proxyuser.root.hosts</name>
       <value>*</value>
   </property>
   <property>
       <name>hadoop.proxyuser.root.groups</name>
       <value>*</value>
   </property>
</configuration>

hdfs-site.xml文件

<configuration>
   <property>
<!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
<!--伪分布式模式,此值必须为1-->
       <name>dfs.replication</name>
       <value>3</value>
   </property>
   <property>
       <name>dfs.namenode.name.dir</name>
       <!-- name node 存放 name table 的目录 -->
       <value>file:/usr/local/hadoop/tmp/hdfs/name</value>
   </property>
   <property>
       <name>dfs.namenode.secondary.http-address</name>
       <value>hadoop02:50090</value>
   </property>
   <property>
       <name>dfs.datanode.data.dir</name>
       <!-- data node 存放数据 block 的目录 -->
       <value>file:/usr/local/hadoop/tmp/hdfs/data</value>
   </property>
   <property>  
       <name>dfs.permissions</name>
       <value>true</value>
   </property>
   <property>
       <name>dfs.permissions.enabled</name>
       <value>false</value>
   </property>
</configuration>

mapred-site.xml 文件

<configuration>
   <property>
<!--指定mapreduce运行在yarn上-->
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
   </property>
   <property>
       <name>yarn.app.mapreduce.am.env</name>
       <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
   </property>
   <property>
       <name>mapreduce.map.env</name>
       <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
   </property>
   <property>
       <name>mapreduce.reduce.env</name>
       <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
   </property>
</configuration>

yarn-site.xml 文件

<configuration>
   <property>
       <name>yarn.resourcemanager.hostname</name>
       <value>hadoop01</value>
   </property>
   <property>
<!--NodeManager获取数据的方式-->
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
   </property>
</configuration>

workers文件

hadoop01
hadoop02
hadoop03

zookeeper配置

在/usr/local/zookeeper/conf/文件夹下

zoo.cfg文件

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local/zookeeper/data

clientPort=2181

server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888

myid文件

在集群每台机器的 dataDir 目录下建立 myid 文件,文件内容与 server.x 的 x 值一致,我们这里是在镜像修改配置,所以先都弄成1,之后再改。

cd /usr/local/zookeeper
mkdir data
nano myid

myid内容如下:

1

hbase配置

在/usr/local/hbase/conf/文件夹下

hbase-site.xml文件

<configuration>
    <property>
       <name>hbase.rootdir</name>
       <value>hdfs://hadoop01:9000/hbase</value>
   </property>
   <property>
       <name>hbase.zookeeper.quorum</name>
       <value>hadoop01,hadoop02,hadoop03</value>
   </property>
   <property>
       <name>hbase.zookeeper.property.clientPort</name>
       <value>2181</value>
   </property>
   <property>
       <name>hbase.cluster.distributed</name>
       <value>true</value>
   </property>
   <property>
       <name>hbase.zookeeper.property.dataDir</name>
       <value>/usr/local/zookeeper/data</value>
   </property>
</configuration>

hbase-env.sh文件

加入:

export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HBASE_CLASSPATH=/usr/local/hbase/conf
export HBASE_MANAGES_ZK=flase

backup-master文件

hadoop01

regionservers文件

hadoop01
hadoop02
hadoop03

提交镜像

docker ps -a
//找到你的容器id
docker commit <容器id> hbase
//将这个状态创建为名为hbase的镜像

run

docker run -d -p 16000:16000 -p 16030:16030 -p 16020:16020 -p 2181:2181 -p 2888:2888 -p 3888:3888 -p 50070:50070 -p 8020:8020 -p 50075:50075 -p 50010:50010 -p 8088:8088 -p 8032:8032 -p 8042:8042 -p 8040:8040 -p 19888:19888 -p 8080:8080 -p 4040-4050:4040-4050 -p 9000:9000 -p 8001:8001 -p 50090:50090 -p 9090:9090 -p 7070:7070 -p 7077:7077 -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 8084:8084 -it -h hadoop01 --name hadoop01 hbase
docker run -d -it -h hadoop02 --name hadoop02 hbase
docker run -d -it -h hadoop03 --name hadoop03 hbase

修改02,03机器上的myid

docker start hadoop01 hadoop02 hadoop03

docker exec -it hadoop01 bash
exit

docker exec -it hadoop02 bash //分别在不同终端运行
cd /usr/local/zookeeper/data
nano myid
将其myid内容修改为2
exit

docker exec -it hadoop03 bash //分别在不同终端运行
cd /usr/local/zookeeper/data
nano myid
将其myid内容修改为3
exit

修改hosts文件

docker exec -it hadoop01 bash
docker exec -it hadoop02 bash
docker exec -it hadoop03 bash
//进入终端后
su - //进入一下root权限不然一会环境变量用不了

三个终端都输入如下

nano /etc/hosts
//修改ip和主机映射关系为如下内容
172.17.0.2      hadoop01
172.17.0.3      hadoop02
172.17.0.4      hadoop03

三个机器互相ssh

//三个终端都要打这几行命令
//注意在交互过程要输入yes全部三个字母,不要只说一个y
service ssh start
ssh hadoop01
exit
ssh hadoop02
exit
ssh hadoop03
exit

启动

先启动hadoop集群

su -
hdfs namenode -format //初始化
start-all.sh //启动
jps //查看一下
结果:
root@hadoop01:~# jps
816 ResourceManager
1393 Jps
299 NameNode
477 DataNode
990 NodeManager
root@hadoop01:~#
stop-all.sh //停止,注意只是测试停止,之后的都需要这个作为基础的,记得重新打开

zookeeper启动需要三台机器都启动,停止也是分别停止,三台机器都启动才能看见状态

su -
zkServer.sh start
zkServer.sh status //需要三台都启动后再查看状态
zkServer.sh stop //停止,注意只是测试停止,之后的都需要这个作为基础的,记得重新打开

hbase启动在hadoop01上启动就行了

su -
start-hbase.sh
hbase shell //进入控制台
create 'c','d'
list //展示刚刚建立的表
exit
hbase-daemon.sh start thrift //启动thrift服务,python可以连接
stop-hbase.sh //停止,注意只是测试停止,之后的都需要这个作为基础的,记得重新打开
最后的结果应该是这些
root@hadoop01:~# jps
4705 NameNode
2354 DataNode
6786 ThriftServer
5188 ResourceManager
5832 QuorumPeerMain
6058 HMaster
6203 HRegionServer
3021 NodeManager
6893 Jps
root@hadoop01:~#
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇