网站建设业务员论坛,网站策划是什么,新网站怎么做seo,公司网站域名续费#x1f4bb;目录 1、准备2、安装镜像2.1、创建centos-ssh的镜像2.2、创建hadoop的镜像 3、配置ssh网络3.1、搭建同一网段的网络3.2、配置host实现互相之间可以免密登陆3.3、查看是否成功 4、安装配置Hadoop4.1、添加存储文件夹4.2、添加指定配置4.3、同步数据 5、测试启动5.1… 目录 1、准备2、安装镜像2.1、创建centos-ssh的镜像2.2、创建hadoop的镜像 3、配置ssh网络3.1、搭建同一网段的网络3.2、配置host实现互相之间可以免密登陆3.3、查看是否成功 4、安装配置Hadoop4.1、添加存储文件夹4.2、添加指定配置4.3、同步数据 5、测试启动5.1、启动配置5.2、启动hadoop 1、准备
准备安装的环境最好是cenos的环境相对问题会少一些我因为是mac的内存比较珍贵所以嫌麻烦就没安装虚拟机所以问题非常多所以还是不要嫌麻烦最好就使用的是mac。
目的通过本地docker安装hadoop实现一主二从的分布式存储集群安装。准备 准备一个内存还ok可以安装docker的系统最好是centos7的。把相关需要的包传到该容器环境去这个是我的hadoop和jdk的版本 链接: https://pan.baidu.com/s/1EN9wtLbNv7i6X2bcTh0yhw?pwdibum 提取码: ibum
2、安装镜像
2.1、创建centos-ssh的镜像
下载安装cenos7镜像 docker pull cenos:7 这里贴一下常用指令Dockerfile的常用指令想详细学习可以了解Dockerfile文件可以看我 docker安装部署容器这一篇文章。 创建一个Dockerfile文件 通过Dockerfile文件创建镜像通过ssh实现可以共用一个局域网
FROM centos:7
MAINTAINER zfp# 添加EPEL源如果直接是centos的环境可以不用加
RUN yum install -y epel-release# 安装 openssh-server 和 sudo
RUN yum install -y openssh-server sudo# 修改 SSH 配置文件禁用 PAM 认证。
RUN sed -i s/UsePAM yes/UsePAM no/g /etc/ssh/sshd_config
#安装 OpenSSH 客户端
RUN yum install -y openssh-clients
#配置 SSH 服务
RUN echo root:123456 | chpasswd
RUN echo root ALL(ALL) ALL /etc/sudoers
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# 创建运行 SSH 服务所需的目录
RUN mkdir /var/run/sshd# 暴露 SSH 端口
EXPOSE 22# 启动 SSH 服务
CMD [/usr/sbin/sshd, -D]
构建centos7-ssh docker build -tcentos7-ssh .
将生成一个名为centos7-ssh的镜像
2.2、创建hadoop的镜像
准备需要的包包需要和Dockerfile在同一级目录下
hadoop的jdk和hive的该镜像除了hadoop还需要有jdk所以需要先把jdk的包先准备好因为要用到hive我把hive的包也内嵌进去了所以需要把包先准备好。 继续创建一个Dockerfile文件
FROM centos7-sshADD jdk-8u361-linux-x64.tar.gz /usr/local/
#需要确认解压之后的文件名称对不对应得上
RUN mv /usr/local/jdk1.8.0_361 /usr/local/jdk1.8
ENV JAVA_HOME /usr/local/jdk1.8
ENV PATH $JAVA_HOME/bin:$PATHADD hadoop-3.3.4.tar.gz /usr/local
RUN mv /usr/local/hadoop-3.3.4 /usr/local/hadoop
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH $HADOOP_HOME/bin:$PATHADD apache-hive-3.1.3-bin.tar.gz /usr/local
RUN mv /usr/local/apache-hive-3.1.3-bin /usr/local/hive
ENV HIVE_HOME /usr/local/hive
ENV PATH $HIVE_HOME/bin:$PATHRUN yum install -y which sudo构建镜像 docker build -tcentos7-ssh .
3、配置ssh网络
3.1、搭建同一网段的网络 创建网络 docker network create --driver bridge hadoop-br 配置三台容器的网络hadoop1因为是主节点所以需要把web的页面端口映射出来。
docker run -itd --network hadoop-br --name hadoop1 -p 50070:50070 -p 8088:8088 hadoop
docker run -itd --network hadoop-br --name hadoop2 hadoop
docker run -itd --network hadoop-br --name hadoop3 hadoop查看网络 docker network inspect hadoop-br 会看到对应的容器的ip 这个是我的可以看自己的对应的最后一位会从2开始
172.20.0.2 hadoop1
172.20.0.3 hadoop2
172.20.0.4 hadoop3 3.2、配置host实现互相之间可以免密登陆
分别进入不同的容器
docker exec -it hadoop1 bash
docker exec -it hadoop2 bash
docker exec -it hadoop3 bash编辑文件 vi /etc/hosts
把端口以及名称映射放入该文件内需要放自己生成的hadoop-br的网络
#这个是我的
172.20.0.2 hadoop1
172.20.0.3 hadoop2
172.20.0.4 hadoop3 配置免密登录 前面镜像中已经安装了ssh服务所以直接分别在每台机器上执行以下命令
ssh-keygen
一路回车
ssh-copy-id -i /root/.ssh/id_rsa -p 22 roothadoop1
输入密码如果按我的来得话就是123456
ssh-copy-id -i /root/.ssh/id_rsa -p 22 roothadoop2
输入密码如果按我的来得话就是123456
ssh-copy-id -i /root/.ssh/id_rsa -p 22 roothadoop3
输入密码如果按我的来得话就是123456
3.3、查看是否成功
ping hadoop1
ping hadoop2
ping hadoop3
ssh hadoop1
ssh hadoop2
ssh hadoop3
如果都可以正常ping通和切换则代表成功
4、安装配置Hadoop
4.1、添加存储文件夹 进入容器hadoop1 最好重写进入一下,要不然可能会没有hadoop文件 docker exec -it hadoop1 bash 创建一些文件夹用于存储hadoop运行时时产生文件的存储
mkdir /home/hadoop
mkdir /home/hadoop/tmp /home/hadoop/hdfs_name /home/hadoop/hdfs_data4.2、添加指定配置
都添加在configuration/configuration标签内部确认自己不要粘贴错误需要先按i否则粘贴到时候很容易去除掉一些文字
编辑core-site.xml vi core-site.xml !--指定namenode的地址--propertynamefs.defaultFS/namevaluehdfs://hadoop1:9000/value/property!--用来指定使用hadoop时产生文件的存放目录--propertynamehadoop.tmp.dir/namevaluefile:/home/hadoop/tmp/value/property!--用来设置检查点备份日志的最长时间--propertynameio.file.buffer.size/namevalue131702/value/property
编辑hdfs-site.xml vi hdfs-site.xml
!--指定hdfs中namenode的存储位置--propertynamedfs.namenode.name.dir/namevaluefile:/home/hadoop/hdfs_name/value/property!--指定hdfs中namedata的存储位置--propertynamedfs.datanode.data.dir/namevaluefile:/home/hadoop/hdfs_data/value/property!--指定hdfs保存数据的副本数量--propertynamedfs.replication/namevalue2/value/propertypropertynamedfs.namenode.secondary.http-address/namevaluehadoop1:9001/value/propertypropertynamedfs.webhdfs.enabled/namevaluetrue/value/property
编辑mapred-site.xml 该文件部分版本没有是因为被加了后缀先执行 cp mapred-site.xml.template mapred-site.xml 在去编辑如果有的就直接编辑就行 vi mapred-site.xml
!--告诉hadoop以后MR(Map/Reduce)运行在YARN上--propertynamemapreduce.framework.name/namevalueyarn/value/propertypropertynamemapreduce.jobhistory.address/namevaluehadoop1:10020/value/propertypropertynamemapreduce.jobhistory.webapp.address/namevaluehadoop1:19888/value/property
编辑yarn-site.xml vi yarn-site.xml !--nomenodeManager获取数据的方式是shuffle--propertynameyarn.nodemanager.aux-services/namevaluemapreduce_shuffle/value/property!--指定Yarn的老大(ResourceManager)的地址-- propertynameyarn.nodemanager.auxservices.mapreduce.shuffle.class/namevalueorg.apache.hadoop.mapred.ShuffleHandler/value/propertypropertynameyarn.resourcemanager.address/namevaluehadoop1:8032/value/propertypropertynameyarn.resourcemanager.scheduler.address/namevaluehadoop1:8030/value/propertypropertynameyarn.resourcemanager.resource-tracker.address/namevaluehadoop1:8031/value/propertypropertynameyarn.resourcemanager.admin.address/namevaluehadoop1:8033/value/propertypropertynameyarn.resourcemanager.webapp.address/namevaluehadoop1:8088/value/property编辑slaves文件
hadoop1
hadoop2
hadoop34.3、同步数据
同步拷贝数据到hadoop2、hadoop3 依次执行以下命令
scp -r $HADOOP_HOME/ hadoop2:/usr/local/
scp -r $HADOOP_HOME/ hadoop3:/usr/local/scp -r /home/hadoop hadoop2:/
scp -r /home/hadoop hadoop3:/5、测试启动
5.1、启动配置
分别重新连接每台机器
docker exec -it hadoop1 bash
docker exec -it hadoop2 bash
docker exec -it hadoop3 bash
分别给每台机器配置hadoop sbin目录的环境变量,jdk的也追加一下要不然可能报错 vi ~/.bashrc或者vi ~/.bash_profile 追加
export PATH$PATH:$HADOOP_HOME/sbinexport JAVA_HOME/usr/local/jdk1.8
export PATH$PATH:$JAVA_HOME/bin执行 source ~/.bashrc
5.2、启动hadoop
格式化hdfs hdfs namenode -format
执行一下jps这个时候应该是只有一个启动的如果这个命令不行就说明jdk路径压根没配置正确
一键启动 start-all.sh 这个时候如果爆上面的错误原因是 hadoop-env.sh文件,无法通过标签去读取到jdk的地址 修改全部主机的hadoop-env.sh文件 这个时候需要先 cd $HADOOP_HOME/etc/hadoop 去修改 vi hadoop-env.sh文件 找到下面截图的这个位置把地址修改为jdk的实际安装路径不要是{}的路径是前面配置的Dockerfile文件时配置的路径 然后在继续执行start-all.sh启动命令可以通过jps命令看端口是不是变多了如下应该就是成功啦 最后在到映射出来的web路径去查看