伪分布式概念
伪分布式模式也是只需要一台机器,但是与本地模式的不同,伪分布式使用的是分布式的思想,具有完整的分布式文件存储和分布式计算的思想。只不过在进行存储和计算的时候涉及到的相关的守护进程都运行在同一台机器上,都是独立的Java进程。
总结来说: 伪分布式集群就是只有一个节点的分布式集群。
- 伪分布式的架构设计
nodemanager 是用来管理datanode的,因此应该放到一台服务器上。
resourcemanager是如何管理数据呢,其他就是靠nodemanager来管理数据的。
再完善一点,我们可以部署历史服务器,也就是mapreduce执行会有一个历史,历史记录不会保存下来,他仅仅是一个历史服务,它的数据是由各个节点主动上报的,各个节点上部署历史汇聚(job log)
- 修改yum源 并 升级内核和软件
3.1 按照规划修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens32
3.1.1 配置完毕之后,重启网络
systemctl restart network
3.2 将yum 源修改为 阿里云的
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
3.3 清空yum 缓存
yum clean all
3.4 生成新的yum缓存
yum makecache
3.5 升级内核和软件
yum -y update
3.6 安装常用软件(选择安装)
yum -y install gcc gcc-c++ autoconf automake cmake make
zlib zlib-devel openssl openssl-devel pcre-devel
rsync openssh-server vim man zip unzip net-tools tcpdump lrzsz tar wget
3.7 关闭防火墙(只执行最后两个也可以)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
3.8 修改主机名hostname
hostnamectl set-hostname hadoop101
3.9 修改hosts配置文件
vim /etc/hosts
将规划好的IP地址和主机名,写到hosts配置文件中
192.168.171.101 hadoop101
192.168.171.102 hadoop102
192.168.171.103 hadoop103
3.10 同步服务器时间
yum -y install ntp ntpdate
ntpdate cn.pool.ntp.org
3.11 重启操作系统
reboot
- 虚拟机克隆
4.1 将设置好的hadoop101虚拟机进行克隆,生成hadoop102、hadoop103 虚拟机
4.1.1 由于克隆过来的hadoop102与hadoop103的IP地址都是hadoop101的IP地址,因此我们可以在修改hadoop102主机信息的时候,关闭hadoop101与hadoop103的虚拟机,依次类推
4.2 需要修改hadoop102/hadoop103虚拟机中的,IP地址与主机名称
如:hostnamectl set-hostname hadoop102
- 下载与安装jdk与hadoop
5.1 可以直接从网络中下载,也可以直接把本地的jdk与hadoop上传到虚拟机中
5.2 打开hadoop101,将jdk与hadoop上传到hadoop101的/opt/soft下(备注:jdk与hadoop也可以放到usr/local/software下)
cd /opt => mkdir soft
5.3 解压 jdk 与 hadoop 并修改其文件名称
tar -zxvf jdk-8u391-linux-x64.tar.gz
tar -zxvf hadoop-3.3.5.tar.gz
mv jdk1.8.0_391/ jdk
mv hadoop-3.3.5 hadoop
5.4 修改环境变量
vim /etc/profile.d/my_env.sh
5.4.1 文件内容添加
export JAVA_HOME=/opt/soft/jdk
export set JAVA_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root
export HADOOP_SHELL_EXECNAME=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HADOOP_HOME=/opt/soft/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
5.4.2 使环境变量生效
source /etc/profile
5.4.3 检查环境变量是否生效
java -version
printenv
- 配置SSH免密码登录
6.1 创建本地密钥并将公共密钥写入认证文件
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
6.2 将认证密钥写到hadoop101/hadoop102/Hadoop03主机上
ssh-copy-id root@hadoop101
ssh-copy-id root@hadoop102
ssh-copy-id root@hadoop103
6.3 测试连接服务,是否需要输入密码
如当前是 hadoop101主机,可以连接 hadoop102主机、hadoop103主机,进行测试
ssh root@hadoop102
ssh root@hadoop103
- hadoop配置文件
7.1 主要修改的文件为:
hadoop-env.sh、core-site.xml、hdfs-site.xml、workers(DataNode节点配置文件)、mapred-site.xml、yarn-site.xml
7.2 hadoop-env.sh
在文件末尾,粘贴(和环境变量中的内容一样,这样的目的是确保万无一失)
export JAVA_HOME=/opt/soft/jdk
export set JAVA_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root
export HADOOP_SHELL_EXECNAME=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
7.2 core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop101:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop_data</value> </property> </configuration> 7.3 hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop102:50090</value> </property> </configuration>7.4 workers
datanode节点配置文件
注意:
hadoop2.x中该文件名为slaves
hadoop3.x中该文件名为workers
修改内容为:
hadoop101
hadoop102
hadoop103
7.5 mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop102:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop102:19888</value> </property> <property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/opt/soft/hadoop</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/opt/soft/hadoop</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/opt/soft/hadoop</value>
</property>
</configuration>
7.6 yarn-site.xml (资源调度器配置文件)
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop103</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property><!-- 是否将对容器实施虚拟内存限制。 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置yarn历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 保存的时间7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
- 分发软件及配置文件
先安装rsync:(注意:三台服务器都需要安装rsync)
yum install rsync -y
rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去
8.1 分发密钥配置文件
rsync -av --progress /.ssh root@hadoop102:/
rsync -av --progress /.ssh root@hadoop103:/
8.2 分发hosts配置文件
rsync -v --progress /etc/hosts root@hadoop102:/etc/
rsync -v --progress /etc/hosts root@hadoop103:/etc/
8.3 分发软件
前提:hadoop102与hadoop103虚拟机中已创建/opt/soft目录
rsync -av --progress /opt/soft/jdk root@hadoop102:/opt/soft
rsync -av --progress /opt/soft/hadoop root@hadoop102:/opt/soft
rsync -av --progress /opt/soft/jdk root@hadoop103:/opt/soft
rsync -av --progress /opt/soft/hadoop root@hadoop103:/opt/soft
8.4 分发环境变量
rsync -v --progress /etc/profile.d/my_env.sh root@hadoop102:/etc/profile.d/
rsync -v --progress /etc/profile.d/my_env.sh root@hadoop103:/etc/profile.d/
8.5 在所有主机节点 使新的环境变量生效
source /etc/profile
- 初始化集群
9.1 hadoop101 节点上
9.1.1 格式化文件系统(格式化一次就行)
hdfs namenode -format
9.1.2 启动hdfs
start-dfs.sh
备注:如果启动时出现没有启动datanode,就是格式化了多次,将core-site.xml中对应的hadoop.tmp.dir生成的目录删除掉,再重新格式化,执行启动start-dfs.sh即可
9.1.3 查看进程jps
hadoop101 看到 NameNode DataNode
hadoop102 看到 SecondaryNameNode DataNode
hadoop103 看到 DataNode
9.2 hadoop103 节点上(注意:启动yarn时,一定要在resourceManger配置的服务器进行启动,例如:hadoop103)
9.2.1 启动 ResourceManager daemon 和 NodeManager
start-yarn.sh
9.2.2 查看进程 jps
hadoop101 看到 NameNode DataNode NodeManager
hadoop102 看到 SecondaryNameNode DataNode NodeManager
hadoop103 看到 DataNode ResourceManager NodeManager
9.3 hadoop102 节点上
9.3.1 启动历史服务器 JobHistoryServer
mapred --daemon start historyserver
9.3.2 查看进程 jps
hadoop101 看到 NameNode DataNode NodeManager
hadoop102 看到 SecondaryNameNode DataNode NodeManager JobHistoryServer
hadoop103 看到 DataNode ResourceManager NodeManager
重要提示:
关机之前 依关闭服务
Hadoop102
mapred --daemon stop historyserver
hadoop103
stop-yarn.sh
hadoop101
stop-dfs.sh
开机后 依次开启服务
hadoop101
start-dfs.sh
hadoop103
start-yarn.sh
hadoop102
mapred --daemon start historyserver
10.修改windows下hosts文件
C:\Windows\System32\drivers\etc\hosts
追加以下内容:
192.168.171.101 hadoop101
192.168.171.102 hadoop102
192.168.171.103 hadoop103
- 测试
11.1 浏览器访问: http://hadoop101:9870
11.2 浏览器访问:http://hadoop102:50090/
11.3 浏览器访问:http://hadoop103:8088
11.4 浏览器访问:http://hadoop102:19888/
- 测试hdfs
12.1 本地文件系统创建 测试文件 wcdata.txt
vim wcdata.txt
内容如下:
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
FlinkHBase Flink
Hive StormHive Flink HadoopHBase
HiveHadoop Spark HBase StormHBase
Hadoop Hive FlinkHBase Flink Hive StormHive
Flink HadoopHBase Hive
Spark HBaseHive Flink
Storm Hadoop HBase SparkFlinkHBase
StormHBase Hadoop Hive
12.2 在 HDFS 上创建目录 /wordcount/input
hdfs dfs -mkdir -p /wordcount/input
12.3 查看 HDFS 目录结构
hdfs dfs -ls /
hdfs dfs -ls /wordcount
hdfs dfs -ls /wordcount/input
12.4 上传本地测试文件 wcdata.txt 到 HDFS 上 /wordcount/input
hdfs dfs -put wcdata.txt /wordcount/input
12.5 检查文件是否上传成功
hdfs dfs -ls /wordcount/input
hdfs dfs -cat /wordcount/input/wcdata.txt
- 测试mapreduce
13.1 计算 PI 的值
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar pi 10 10
13.2 单词统计
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar wordcount /wordcount/input/wcdata.txt /wordcount/result
hdfs dfs -ls /wordcount/result
hdfs dfs -cat /wordcount/result/part-r-00000
- 元数据
14.1 hadoop101节点上
注意:如下 /home/hadoop_data 是在core-site.xml 中hadoop.tmp.dir的配置内容
cd /home/hadoop_data/dfs/name/current
ls
14.2 看到如下内容:
edits_0000000000000000001-0000000000000000009 edits_inprogress_0000000000000000299 fsimage_0000000000000000298 VERSION
edits_0000000000000000010-0000000000000000011 fsimage_0000000000000000011 fsimage_0000000000000000298.md5
edits_0000000000000000012-0000000000000000298 fsimage_0000000000000000011.md5 seen_txid
14.3 查看fsimage
hdfs oiv -p XML -i fsimage_0000000000000000011
14.4 将元数据内容按照指定格式读取后写入到新文件中
hdfs oiv -p XML -i fsimage_0000000000000000011 -o /opt/soft/fsimage.xml
14.5 查看edits
14.6 将元数据内容按照指定格式读取后写入到新文件中
hdfs oev -p XML -i edits_inprogress_0000000000000000299 -o /opt/soft/edit.xml
版权归原作者 老马聊技术 所有, 如有侵权,请联系我们删除。