暑假周总结2

暑假第二周,本周主要是完成数据结构小学期的大作业和数据库小学期的大作业,并且配置好上次下载的hadoop

数据结构的大作业我选择了教师信息管理系统,这个课题基本不涉及算法,而且数据库增删改查对我来说已经没有任何难度了,很快就完成了

数据库的大作业虽然十天后才验收但我也是三天就完成了,也是web的增删改查,跟上学期的javaweb没两样

主要工作是配置hadoop

配置 hadoop 环境变量

在 /etc/profile 文件的尾部添加以下内容:

#HADOOP

export HADOOP_HOME=/hadoop/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

 使配置文件生效

source /etc/profile
测试是否安装成功
hadoop version

本地运行模式
在 hadoop-2.7.7 文件下面创建一个 input 文件夹
mkdir input
将 Hadoop 的 xml 配置文件复制到 input
cp etc/hadoop/*.xml input
在 hadoop-2.7.7 目录下,执行 share 目录下的 MapReduce 程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep input/ output 'dfs[a-z.]+'

伪分布式运行模式
3.2.1 启动 HDFS 并运行 MapReduce 程序
配置集群,修改 Hadoop 的配置文件(/hadoop/hadoop-2.7.7/etc/hadoop 目录下)

 core-site.xml

<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://lyh:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/hadoop-2.7.7/data/tmp</value>
</property>
</configuration>
hadoop-env.sh

   修改 JAVA_HOME 路径:

# The java implementation to use.
export JAVA_HOME=/usr/local/java/jdk1.8.0_151

hdfs-site.xml

<configuration>
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

启动集群

格式化 NameNode(第一次启动时格式化,以后就不要总格式化)

hdfs namenode -format
 启动 NameNode

hadoop-daemon.sh start namenode

启动 DataNode

hadoop-daemon.sh start datanode
查看集群

 查看是否启动成功

操作集群

在 HDFS 文件系统上创建一个 input 文件夹

hdfs dfs -mkdir -p /user/lyh/input

  将测试文件内容上传到文件系统上

hdfs dfs -put wcinput/wc.input /user/lyh/input/

  在 hadoop-2.7.7 目录下,运行 MapReduce 程序

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/lyh/input/ /user/lyh/output

 查看输出结果

   命令行查看:

hdfs dfs -cat /user/atguigu/output/*

完全分布式运行模式
3.3.1 虚拟机准备
准备(克隆) 3 台客户机
主机名称 IP 地址
master 192.168.217.130
slave1 192.168.217.131
slave2 192.168.217.132
每台机器分别修改 /etc/hosts 文件,将每个机器的 hostname 和 ip 对应
vim /etc/hosts
192.168.217.130 master
192.168.217.131 slave1
192.168.217.132 slave2
之后详细操作查看 2.1
3.3.2 编写集群分发脚本 xsync
scp(secure copy)安全拷贝

① scp 定义:

  scp 可以实现服务器与服务器之间的数据拷贝。

② 基本语法:

scp -r 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
1
rsync(remote synchronize)远程同步工具

① rsync 定义:

  rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

  rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp 是把所有文件都复制过去。

② 基本语法:

rsync -rvl 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
  说明:-v:显示复制过程 、-l:拷贝符号链接

xsync 集群分发脚本

需求:循环复制文件到所有节点的相同目录下

① 在 /usr/local/bin 目录下创建 xsync 文件

vim xsync
   在文件中输入以下内容:

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for i in master slave1 slave2
do
echo "****************** $i *********************"
rsync -rvl $pdir/$fname $user@$i:$pdir
done

  ② 修改脚本 xsync 具有执行权限

chmod 777 xsync
  ③ 调用脚本形式:xsync 文件名称

3.3.3 集群配置
集群部署规划
master slave1 slave2
HDFS NameNode
DataNode DataNode SecondaryNameNode
DataNode
YARN NodeManager ResourceManager
NodeManager NodeManager
配置集群

⑴ 配置核心文件

  配置 core-site.xml

<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/hadoop-2.7.7/data/tmp</value>
</property>
</configuration>
  ⑵ HDFS 配置文件

   ① 配置 hadoop-env.sh

    修改 JAVA_HOME 路径:

# The java implementation to use.
export JAVA_HOME=/usr/local/java/jdk1.8.0_151
   ② 配置 hdfs-site.xml

<configuration>
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>

<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:50090</value>
</property>
</configuration>

  ⑶ YARN 配置文件

   ① 配置 yarn-env.sh

   修改 JAVA_HOME 路径:

export JAVA_HOME=/usr/local/java/jdk1.8.0_151

   ② 配置 yarn-site.xml

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

<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave1</value>
</property>

<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>

<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>

  ⑷ MapReduce 配置文件

   ① 配置 mapred-env.sh

    修改 JAVA_HOME 路径:

export JAVA_HOME=/usr/local/java/jdk1.8.0_151
   ② 配置 mapred-site.xml

<configuration>
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>

在集群上分发配置好的 Hadoop 目录
xsync /hadoop/
3.3.4 集群单点启动
如果集群是第一次启动,需要格式化 NameNode
hadoop namenode -format

在 master上启动 NameNode
hadoop-daemon.sh start namenode

在 master、slave1 和 slave2 上分别启动 DataNode
hadoop-daemon.sh start datanode

posted on 2024-07-13 19:57  带带带集美  阅读(2)  评论(0编辑  收藏  举报