中原免费网站建设,wordpress 授权登录,网站的总体风格包括,网站加载速度影响因素一、使用docker搭建基础镜像
1、拉取centos系统镜像 # 我这里使用centos7为例子 docker pull centos:7 2、创建一个dockerfiler文件#xff0c;用来构建自定义一个有ssh功能的centos镜像
# 基础镜像
FROM centos:7
# 作者
#MAINTAINER hadoop
ADD Centos-7.repo /etc/yum.re…一、使用docker搭建基础镜像
1、拉取centos系统镜像 # 我这里使用centos7为例子 docker pull centos:7 2、创建一个dockerfiler文件用来构建自定义一个有ssh功能的centos镜像
# 基础镜像
FROM centos:7
# 作者
#MAINTAINER hadoop
ADD Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo
# 将工作目录切换到/etc/yum.repos.d/
RUN cd /etc/yum.repos.d/
# 使用sed命令注释掉mirrorlist行。
RUN sed -i s/mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOS-*
# 使用sed命令将baseurl修改为http://vault.centos.org。
RUN sed -i s|#baseurlhttp://mirror.centos.org|baseurlhttp://vault.centos.org|g /etc/yum.repos.d/CentOS-*
# 更新yum缓存。
RUN yum makecache
# 使用yum更新系统软件。
RUN yum update -y
# 使用yum安装openssh-server和sudo。
RUN yum install -y openssh-server sudo
# 使用sed命令将UsePAM设置为no禁用PAM认证。
RUN sed -i s/UsePAM yes/UsePAM no/g /etc/ssh/sshd_config
# 使用yum安装openssh-clients。
RUN yum install -y openssh-clients
# 使用echo和chpasswd命令将root用户的密码设置为123456。
RUN echo root:123456 | chpasswd
# 将root用户添加到sudoers文件中允许其执行任何命令。
RUN echo root ALL(ALL) ALL /etc/sudoers
# 生成DSA类型的SSH密钥。
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
# 生成RSA类型的SSH密钥。
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# 创建/var/run/sshd目录。
RUN mkdir /var/run/sshd
# 暴露容器的22端口用于SSH连接。
EXPOSE 22
# 设置容器启动时默认运行的命令为/usr/sbin/sshd -D即启动SSH服务。
CMD [/usr/sbin/sshd, -D]3、因为默认的centos镜像是没有任何功能的根据上面的dockerfile文件生成我们的centos-ssh镜像 # 生成centos7-ssh镜像 docker build -tcentos7-ssh . # 生成之后我们的docker中就有了这个镜像 docker images 4、将jdk、hadoop安装包和Dockerfile目录平级我是windows系统 5、之前的Dockerfile备份为dockerfile_centos7-ssh我们重新再创建一个Dockerfile文件用来构建hadoop镜像
# 基础镜像为centos7-ssh
FROM centos7-ssh# 将当前目录下的jdk复制到镜像中
ADD jdk-8u11-linux-x64.tar.gz /usr/local/
RUN mv /usr/local/jdk1.8.0_11 /usr/local/jdk
# 设置java环境变量
ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME${JAVA_HOME}/jre
ENV CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH${JAVA_HOME}/bin:$PATH# 将hadoop目录复制到镜像中
ADD hadoop-3.2.2.tar.gz /usr/local/
RUN mv /usr/local/hadoop-3.2.2 /usr/local/hadoop
# 设置hadoop环境变量
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
6、根据这个Dockerfile生成centos-hadoop镜像 docker build -tcentos7-hadoop . 7、由于hadoop集群的机器需要网络通讯我们单独给这些服务创建一个网桥 docker network create hadoop 8、启动容器并连接到刚刚创建的网桥
docker run -itd --network hadoop --name hadoop1 -p 50070:50070 -p 8088:8088 -p 9870:9870 centos7-hadoopdocker run -itd --network hadoop --name hadoop2 centos7-hadoopdocker run -itd --network hadoop --name hadoop3 centos7-hadoop# 查看网桥使用情况
docker network inspect hadoop# 记录每台服务器ip后面可能会用
172.18.0.2 hadoop1
172.18.0.3 hadoop2
172.18.0.4 hadoop3二、进入每台容器配置ip地址映射和ssh免密登录
1、配置ip地址配置完成后容器之间互相ping一下看看是否可以ping通
docker exec -it hadoop1 bash
docker exec -it hadoop2 bash
docker exec -it hadoop3 bash# 在每台hadoop服务器的终端输入
vi /etc/hosts我本地发现我修改完hosts文件后我的环境变量配置失效了重新又配置了一下
echo $PATH
vi /etc/profile
export JAVA_HOME/usr/local/jdk
export PATH$PATH:$JAVA_HOME/bin
export HADOOP_HOME/usr/local/hadoop
export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME$HADOOP_HOME
export HADOOP_COMMON_HOME$HADOOP_HOME
export HADOOP_HDFS_HOME$HADOOP_HOME
export HADOOP_YARN_HOME$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR$HADOOP_HOME/lib/native
# 保存文件并退出编辑器# 重新加载环境变量配置
source /etc/profile
记得配置hadoop2和hadoop3可以scp拷贝过去
2、配置免密登录
# 在每台hadoop服务器终端输入
# 谁要去免密登录谁就生成密钥对使用ssh-keygen生成密钥对密钥对包含id_rsa和id_rsa.pubpub就是公钥id_rsa是私钥我们要把id_rsa发送到要免密登录的服务器上去
ssh-keygen# 然后一直回车即可再在每台hadoop服务器终端中输入
# 将公钥发送到需要免密登录的服务器上
ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 roothadoop1
# 填yes后输入第二3步时设置的密码123456
ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 roothadoop2
# 填yes后输入第二3步时设置的密码123456
ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 roothadoop3
# 填yes后输入第二3步时设置的密码123456# 测试是否成功配置ssh免密登录ssh hadoop服务器名
ssh hadoop1三、进入hadoop1中测试hadoop本地模式
1、修改配置文件
# 进入下面的目录
cd /usr/local/hadoop/etc/hadoop
# 修改hadoop-env.sh
vi ./hadoop-env.sh
# 显示行号
:set number
# 修改java目录为/usr/local/jdk
export JAVA_HOME/usr/local/jdk
# 注意看下hadoop_home的路径是否正确 2、新建一个测试数据集
# 在root目录下创建一个temp目录
mkdir /temp
# 创建测试数据集
vi /temp/data.txt
# 测试数据集内容
I Love Bejing
I Love LiuChang
I Love My Home
I Love you
I Love China
Do you miss me?
where are you doing?
this is hadoop hello world!# 进入share下面有一个测试的jar
cd /usr/local/hadoop/share/hadoop/mapreduce
# 这里面有很多mapreduce的测试jar包这里我们测试一下wordcount/root/temp表示测试数据集的目录会读取下面所有的文件/root/output/wc是输出目录
hadoop jar hadoop-mapreduce-examples-3.2.2.jar wordcount /temp /output/wc# 执行之后在/root/output/wc下就有生成的结果
more /output/wc/part-r-00000四、hadoop全分布模式
以下配置在hadoop1上进行配置配置完成后直接把整个目录拷贝到hadoop2和hadoop3从节点
1、修改hadoop-env.sh
# 进入下面的目录
cd /usr/local/hadoop/etc/hadoop
# 修改hadoop-env.sh
vi ./hadoop-env.sh
# 显示行号
:set number
# 修改25行的java目录为/usr/local/jdk
export JAVA_HOME/usr/local/jdk2、修改hdfs-site.xml文件
configuration
!-- 数据块的冗余度默认是3 --
!-- 一般来说数据块冗余度跟数据节点的个数一致最大不超过3 --
propertynamedfs.replication/namevalue2/value
/property!-- 禁用了HDFS的权限检查 --
propertynamedfs.permissions/namevaluefalse/value
/property
/configuration3、配置core-site.xml文件
configuration!-- 配置NameNode地址 --!-- 9000是RPC通信的端口 --propertynamefs.defaultFS/namevaluehdfs://hadoop1:9000/value/property!-- HDFS对应的操作系统目录 --!--默认是linux的/tmp一定要进行修改并且要创建该目录 --propertynamehadoop.tmp.dir/namevalue/usr/local/hadoop/tmp/value/property/configuration4、配置mapred-site.xml文件
configuration!-- 配置MapReduce运行的框架是Yarn --propertynamemapreduce.framework.name/namevalueyarn/value/property
/configuration5、配置yarn-site.xml文件
configuration!-- 配置ResourceManager的地址 --propertynameyarn.resourcemanager.hostname/namevaluehadoop1/value/property!-- MapReduce运行的方式是洗牌 --propertynameyarn.nodemanager.aux-services/namevaluemapreduce_shuffle/value/property
/configuration注意如果是hadoop2.x版本配置slavesHadoop3.x版本中集群配置的设置文件是workers
6、配置slaves文件
# 编辑从节点信息
vi ./etc/hadoop/slaves
# slaves内容
hadoop2
hadoop3cd /usr/local/hadoop/etc/hadoop 即默认的情况下Hadoop在本机启动不加入分布式集群因此无法随着集群的启动而启动。所以我们要把机器加入到集群环境中在workers文件中将hadoop1、hadoop2、hadoop3追加进去。
7、对NameNode进行格式化
hdfs namenode -format8、hadoop1配置完成之后把整个目录拷贝到hadoop2和hadoop3中
# 将hadoop1中的文件夹复制到hadoop2中
scp -r /usr/local/hadoop/ roothadoop2:/usr/local# hadoop1中复制到hadoop3中
scp -r /usr/local/hadoop/ roothadoop3:/usr/local9、启动hadoop
## 启动hadoop
start-all.sh## 判断启动是否成功
# 在hadoop1上执行jps
如果执行start-all.sh报错
ERROR: Attempting to operate on hdfs namenode as root ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation. 进入sbin目录需要修改start-dfs.shstop-dfs.shstart-yarn.shstop-yarn.sh四个文件在start-dfs.shstop-dfs.sh两个文件顶部添加如下参数
#!/usr/bin/env bash
HDFS_DATANODE_USERroot
HADOOP_SECURE_DN_USERhdfs
HDFS_NAMENODE_USERroot
HDFS_SECONDARYNAMENODE_USERroot在start-yarn.shstop-yarn.sh顶部添加如下参数
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USERroot
HADOOP_SECURE_DN_USERyarn
YARN_NODEMANAGER_USERroot在master节点上运行start-all.sh后分别在hadoop2、hadoop3两台机器上进行进程检测。执行命令 jps 查看 Hadoop 的日志文件
cd $HADOOP_HOME/logsls -lt