本文是基于CentOS 7.3系统环境,进行Hadoop的安装和使用 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。 在Hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑计算和资源的调度,耦合性较大,在Hadoop2.x时代,增加了Yarn。Yarn只负责资源的调度,MapReduce只负责计算。 创建在hadoop-2.7.2文件下面创建一个input文件夹 准备数据:将Hadoop的xml配置文件复制到input 执行share目录下的MapReduce程序 查看输出结果 创建在hadoop-2.7.2文件下面创建一个wcinput文件夹 在wcinput文件下创建一个wc.input文件 执行share目录下的MapReduce程序 查看输出结果 创建一个目录 上传一个文件 查看一个目录 查看一个文件 运行一个MapReduce程序 查看结果 下载文件 删除目录 点击【History】,需要提前配置hosts映射关系 配置core-site.xml 配置hadoop-env.sh 配置hdfs-site.xml 配置yarn-env.sh 配置yarn-site.xml 配置mapred-site.xml 在机器hadoop101上执行 在机器hadoop102和hadoop103上执行 在机器hadoop101、hadoop102和hadoop103上执行 在机器hadoop101、hadoop102和hadoop103上执行 在机器hadoop101上执行 在机器hadoop101上执行 将slaves文件同步至其他节点 停止集群所有的服务 NameNode节点(hadoop101) ResourceManager节点(hadoop102) 在机器hadoop101上执行 安装ntp 修改配置文件/etc/ntp.conf 修改配置文件/etc/sysconfig/ntpd hadoop101节点上启动ntp 其他节点上启动ntp
Hadoop的安装和使用
一、Hadoop简介
(1) 什么是Hadoop
(2) Hadoop的优势
Hadoop底层维护多个数据副本,所有即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失
在集群间分配任务数据,可方便的扩展数以千计的节点
在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度
能够自动将失败的任务进行重新分配(3) Hadoop版本区别
Hadoop1.x
Hadoop2.x
MapReduce(计算+资源调度)
MapReduce(计算)
无
Yarn(资源调度)
HDFS(数据存储)
HDFS(数据存储)
Common(辅助工具)
Common(计算+资源调度)
(3) HDFS的架构概述
存储文件的元数据,如文件名,文件目录结构,文件属性(创建时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等
在本地文件系统存储文件块数据,以及块数据的校验和
用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照(4) Yarn的架构概述
二、Hadoop安装
(1) 集群配置
hostname
CPU
内存
硬盘
IP地址
hadoop100
2
4G
100G
192.168.1.100
hadoop101
2
4G
100G
192.168.1.101
hadoop102
2
4G
100G
192.168.1.102
(2) 关闭防火墙
systemctl stop firewalld systemctl disable firewalld
(3) 创建用户
useradd xuzheng passwd xuzheng
(4) 授予用户root权限
# 修改文件为可写权限 sudo chmod 640 /etc/sudoers vi /etc/sudoers # 添加一行 ## Allow root to run any commands anywhere root ALL=(ALL) ALL xuzheng ALL=(ALL) ALL
(5) 重启机器
shutdown -r now
(6) 新建目录
cd /opt mkdir module mkdir software chown -R xuzheng:xuzheng module/ chown -R xuzheng:xuzheng software/
(7) 安装jdk
tar -xzvf jdk-8u201-linux-x64.tar.gz -C /opt/module/ vi /etc/profile # 添加下面内容 export JAVA_HOME=/opt/module/jdk1.8.0_201 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin # 使配置文件生效 source /etc/profile
(8) 安装hadoop
tar -xzvf hadoop-2.7.2.tar.gz -C /opt/module/ vi /etc/profile # 添加下面内容 #HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-2.7.2 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 使配置文件生效 source /etc/profile
三、本地运行模式
(1) grep实例
mkdir input
cp etc/hadoop/*.xml input
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
cat output/part-r-00000
(2) Word Count实例
mkdir wcinput
cd wcinput vi wc.input # 添加下面内容 hadoop yarn hadoop mapreduce inspur inspur
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
cat output/part-r-00000
四、伪分布式模式
(1) 配置hadoop-env.sh
vi etc/hadoop/hadoop-env.sh # 添加下面内容 # The java implementation to use. export JAVA_HOME=/opt/module/jdk1.8.0_201
(2) 配置core-site.xml
vi etc/hadoop/core-site.xml # 添加下面内容 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop100:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property> </configuration>
(3) 配置hdfs-site.xml
vi etc/hadoop/hdfs-site.xml # 添加下面内容 <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
(4) 启动集群
# 格式化NameNode(第一次启动时格式化,以后不用) # 如果再次重启NameNode会导致namenode和datanode的集群CID不同,因此无法启动datanode hdfs namenode -format # 启动NameNode sbin/hadoop-daemon.sh start namenode # 启动DataNode sbin/hadoop-daemon.sh start datanode
(5) 访问hdfs管理页面
https://192.168.1.100:50075
(6) 如何重启NameNode
cd /opt/module/hadoop-2.7.2 # 先停止datanode服务 sbin/hadoop-daemon.sh stop datanode # 再停止namenode服务 sbin/hadoop-daemon.sh stop namenode # 再删除data和logs目录 rm -rf data/ logs/ # 格式化NameNode hdfs namenode -format
(7) hdfs操作命令
bin/hdfs dfs -mkdir -p /user/xuzheng/input
bin/hdfs dfs -put wcinput/wc.input /user/atguigu/input/
bin/hdfs dfs -ls /user/xuzheng/input/
bin/hdfs dfs -cat /user/xuzheng/ input/wc.input
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/xuzheng/input/ /user/xuzheng/output
hdfs dfs -cat /user/xuzheng/output/*
hdfs dfs -get /user/xuzheng/output/part-r-00000 ./wcoutput/
hdfs dfs -rm -r /user/xuzheng/output
(8) 配置yarn-env.sh
vi etc/hadoop/yarn-env.sh # 添加下面内容 export JAVA_HOME=/opt/module/jdk1.8.0_201
(9) 配置yarn-site.xml
vi etc/hadoop/yarn-site.xml # 添加下面内容 <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop100</value> </property> </configuration>
(8) 配置mapred-env.sh
vi etc/hadoop/mapred-env.sh # 添加下面内容 export JAVA_HOME=/opt/module/jdk1.8.0_201
(9) 配置mapred-site.xml
vi etc/hadoop/mapred-site.xml # 添加下面内容 <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
(10) 启动YARN
# 必须保证NameNode和DataNode已经启动 # 启动ResourceManager sbin/yarn-daemon.sh start resourcemanager # 启动NodeManager sbin/yarn-daemon.sh start nodemanager
(11) 访问yarn管理页面
https://192.168.1.100:8088/cluster
(12) 删除output目录
bin/hdfs dfs -rm -R /user/xuzheng/output
(13) 执行share目录下的MapReduce程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/xuzheng/input/wc.input /user/xuzheng/output
(14) 查看输出结果
bin/hdfs dfs -cat /user/xuzheng/output/*
(15) 配置历史服务器
vi etc/hadoop/mapred-site.xml # 添加下面内容 <configuration> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop100:10020</value> </property> <!-- 历史服务器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop100:19888</value> </property> </configuration>
(16) 启动历史服务器
sbin/mr-jobhistory-daemon.sh start historyserver
(17) 访问历史
192.168.1.100 hadoop100
(18) 开启日志聚集
vi yarn-site.xml # 添加如下内容 <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 日志保留时间设置7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
(19) 关闭HistoryManager、NodeManager和ResourceManager
sbin/mr-jobhistory-daemon.sh stop historyserver sbin/yarn-daemon.sh stop nodemanager sbin/yarn-daemon.sh stop resourcemanager
(20) 启动HistoryManager、ResourceManager和NodeManager
sbin/mr-jobhistory-daemon.sh start historyserver sbin/yarn-daemon.sh start resourcemanager sbin/yarn-daemon.sh start nodemanager
(21) 测试
bin/hdfs dfs -rm -R /user/xuzheng/output hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/xuzheng/input /user/xuzheng/output
四、完全分布式模式
(1) 准备3台客户机
hostname
CPU
内存
硬盘
IP地址
hadoop100
2
4G
100G
192.168.1.100
hadoop101
2
4G
100G
192.168.1.101
hadoop102
2
4G
100G
192.168.1.102
(2) 关闭防火墙
systemctl stop firewalld systemctl disable firewalld
(3) 增加用户并授权
useradd xuzheng passwd xuzheng
# 修改文件为可写权限 sudo chmod 640 /etc/sudoers vi /etc/sudoers # 添加一行 ## Allow root to run any commands anywhere root ALL=(ALL) ALL xuzheng ALL=(ALL) ALL
(4) 修改主机名称
hostnamectl --static set-hostname hadoop101 hostnamectl --static set-hostname hadoop102 hostnamectl --static set-hostname hadoop103
(5) 安装jdk和hadoop
tar -xzvf jdk-8u201-linux-x64.tar.gz -C /opt/module/ tar -xzvf hadoop-2.7.2.tar.gz -C /opt/module/
(6) 配置环境变量
vi /etc/profile # 添加下面内容 export JAVA_HOME=/opt/module/jdk1.8.0_201 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin #HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-2.7.2 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 使配置文件生效 source /etc/profile
(7) 集群规划
hadoop101
hadoop102
hadoop103
HDFS
NameNode DataNode
DataNode
SecondaryNameNode DataNode
YARN
NodeManager
ResourceManager NodeManager
NodeManager
(8) 集群配置
vi etc/hadoop/core-site.xml # 添加下面内容 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop101:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property> </configuration>
vi etc/hadoop/hadoop-env.sh # 添加下面内容 # The java implementation to use. export JAVA_HOME=/opt/module/jdk1.8.0_201
vi etc/hadoop/hdfs-site.xml # 添加下面内容 <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop103:50090</value> </property> </configuration>
vi etc/hadoop/yarn-env.sh # 添加下面内容 # The java implementation to use. export JAVA_HOME=/opt/module/jdk1.8.0_201
vi etc/hadoop/yarn-site.xml # 添加下面内容 <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop102</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>
vi etc/hadoop/mapred-site.xml # 添加下面内容 <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop101:10020</value> </property> <!-- 历史服务器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop101:19888</value> </property> </configuration>
(9) 启动HDFS
# 格式化NameNode(第一次启动时格式化,以后不用) # 如果再次重启NameNode会导致namenode和datanode的集群CID不同,因此无法启动datanode hdfs namenode -format # 启动NameNode sbin/hadoop-daemon.sh start namenode # 启动DataNode sbin/hadoop-daemon.sh start datanode
# 启动DataNode sbin/hadoop-daemon.sh start datanode
(10) ssh无密登录配置
ssh-keygen -t rsa
ssh-copy-id hadoop101 ssh-copy-id hadoop102 ssh-copy-id hadoop103
(11) 配置从节点
vi etc/hadoop/slaves # 删除所有内容并添加 hadoop101 hadoop102 hadoop103
(12) 集群启动(ssh配置是前提)
vi etc/hadoop/slaves # 删除所有内容并添加 hadoop101 hadoop102 hadoop103
/home/xuzheng/bin/xsync slaves
sbin/hadoop-daemon.sh stop namenode sbin/hadoop-daemon.sh stop datanode
sbin/start-dfs.sh
sbin/start-yarn.sh
(13) 测试集群
hdfs dfs -rm -r /user/xuzheng/input hdfs dfs -mkdir -p /user/xuzheng/input
(14) 集群时间同步
yum -y install net-tools # netstat yum -y install ntp
vi /etc/ntp.conf # 限制 192.168.1.0~192.168.255.255之间的服务器可以访问 restrict 192.168.1.0 mask 255.255.0.0 nomodify notrap # 注释以下内容,因为集群在局域网中,所以不属于互联网其他时间 #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst #添加以下信息,当失去互联网连接后,使用本机时间做同步 server 127.127.1.0 fudge 127.127.1.0 stratum 10
vi /etc/sysconfig/ntpd #添加以下信息,硬件时间与系统时间同步 SYNC_HWCLOCK=yes
systemctl stop chronyd systemctl disable chronyd systemctl start ntpd systemctl enable ntpd
crontab -e # 编写定时任务如下: */10 * * * * /usr/sbin/ntpdate hadoop101
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算