大家好,又见面了,我是你们的朋友全栈君。
Apache、Cloudera、Hortonworks
在 Hadoop 1.x 时代,Hadoop 中的 MapReduce 同时处理业务逻辑运算和资源调度,耦合性较大。 在 Hadoop 2.x 时代,增加了 Yarn。Yarn 只负责资源的调度,MapReduce 只负责运算。
① ResourceManager(RM): (1)处理客户端请求。 (2)监控 NodeManager。 (3)启动或监控 ApplicationMaster。 (4)资源的分配与调度。 ② NodeManager(NM): (1)管理单个节点上的资源。 (2)处理来自 ResourceManager 的命令。 (3)处理来自 ApplicationMaster 的命令。 (4)资源的分配与调度。 ③ ApplicationMaster(AM): (1)负责数据的切分。 (2)为应用程序申请资源并分配给内部的任务。 (3)任务的监控与容错。 ④ Container: Container 是 Yarn 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
② 将 BOOTPROTO=dhcp 改成 BOOTPROTO=static、ONBOOT=no 改成 ONBOOT=yes ③ 并在文件尾部添加以下内容
IPADDR=192.168.217.129
NETMASK=255.255.255.0
GATEWAY=192.168.217.2
DNFS1=192.168.217.2
④ 重启网关服务
systemctl restart network
hostnamectl set-hostname lyh
systemctl stop firewalld
② 禁止防火墙开机启动
systemctl disable firewalld
③ 关闭 Selinux
vim /etc/sysconfig/selinux
将 SELINUX=enforcing 改成 SELINUX=disabled
mkdir /usr/local/java
tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/local/java/
vim /etc/profile
添加以下内容:
# JAVAHOME
export JAVA_HOME=/usr/local/java/jdk1.8.0_151
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
rpm -qa | grep jdk
② 删除已经安装的 jdk
yum -y remove XXX(上面查询到的 jdk 名称)
注意:如果终端出现以下错误:/var/run/yum.pid 已被锁定,PID 为 1610 的另一个程序正在运行。
则输入以下命令:
rm -f /var/run/yum.pid
之后再执行以上删除 jdk 的命令
③ 重新让配置文件生效
source /etc/profile
④ 输入 java、javac、java -version 命令检验 jdk 是否安装成功
mkdir /hadoop
tar -zxvf hadoop-2.7.7.tar.gz -C /hadoop/
#HADOOP
export HADOOP_HOME=/hadoop/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
② 使配置文件生效
source /etc/profile
hadoop version
Hadoop 的运行模式包括:本地模式、伪分布式模式、完全分布式模式。
mkdir input
cp etc/hadoop/*.xml input
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep input/ output 'dfs[a-z.]+'
mkdir wcinput
vim wc.input
在文件中输入以下内容:
hadoop yarn
hadoop mapreduce
spark
spark
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount wcinput/ wcoutput
<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>
hdfs namenode -format
② 启动 NameNode
hadoop-daemon.sh start namenode
③ 启动 DataNode
hadoop-daemon.sh start datanode
② web 端查看 HDFS 文件系统 http://192.168.217.129:50070
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/*
浏览器页面查看:
<configuration>
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>lyh</value>
</property>
</configuration>
② yarn-env.sh
修改 JAVA_HOME 路径:
export JAVA_HOME=/usr/local/java/jdk1.8.0_151
③ mapred-env.sh
修改 JAVA_HOME 路径:
export JAVA_HOME=/usr/local/java/jdk1.8.0_151
④ 将 mapred-site.xml.template 重新命名为 mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
<configuration>
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-daemon.sh start resourcemanager
③ 启动NodeManager
yarn-daemon.sh start nodemanager
② web 端查看 YARN 页面 http://192.168.217.129:8088
hdfs dfs -rm -R /user/lyh/output
② 在 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/lyh/output/*
浏览器页面查看:
为了查看程序的历史运行情况,需要配置一下历史服务器。
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>lyh:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>lyh:19888</value>
</property>
mr-jobhistory-daemon.sh start historyserver
日志聚集概念:应用运行完成以后,将程序运行日志信息上传到 HDFS 系统上。 日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要重新启动 NodeManager 、ResourceManager 和 HistoryManager。
yarn-daemon.sh stop resourcemanager
yarn-daemon.sh stop nodemanager
mr-jobhistory-daemon.sh stop historyserver
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
mr-jobhistory-daemon.sh start historyserver
hdfs dfs -rm -R /user/lyh/output
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/lyh/input /user/lyh/output
主机名称 | IP 地址 |
---|---|
master | 192.168.217.130 |
slave1 | 192.168.217.131 |
slave2 | 192.168.217.132 |
vim /etc/hosts
192.168.217.130 master
192.168.217.131 slave1
192.168.217.132 slave2
scp -r 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
rsync -rvl 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
说明:-v:显示复制过程 、-l:拷贝符号链接
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 文件名称
master | slave1 | slave2 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNodeDataNode |
YARN | NodeManager | ResourceManagerNodeManager | NodeManager |
<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>
xsync /hadoop/
hadoop namenode -format
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
ssh-keygen -t rsa
然后敲(三个回车),就会在 .ssh 目录下生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
master
slave1
slave2
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
② 同步所有节点配置文件
xsync slaves
hdfs namenode -format
② 启动 HDFS
start-dfs.sh
③ 启动 YARN(slave1 上)
注意:NameNode 和 ResourceManger 如果不是同一台机器,不能在 NameNode 上启动 YARN,应该在 ResouceManager 所在的机器上启动 YARN。
start-yarn.sh
vim alljps
在文件中输入以下内容:
#!/bin/bash
for i in master slave1 slave2
do
echo "****************** $i *********************"
ssh $i "source /etc/profile && jps"
done
② 修改脚本 alljps 具有执行权限
chmod 777 alljps
③ 调用脚本形式:alljps
时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。
yum install ntp
② 修改 ntp 配置文件
vim /etc/ntp.conf
修改内容如下:
⑴ 授权 192.168.1.0-192.168.1.255 网段上的所有机器可以从这台机器上查询和同步时间
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.1.0 mask 255.255.255.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
③ 修改/etc/sysconfig/ntpd 文件
vim /etc/sysconfig/ntpd
添加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
④ 重新启动 ntpd 服务
systemctl restart ntpd.service
⑤ 设置 ntpd 服务开机启动
systemctl enable ntpd.service
crontab -e
编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate master
tar -zxvf apache-maven-3.0.5-bin.tar.gz -C /opt/module/
② 配置环境变量
vim /etc/profile
添加以下内容:
#MAVEN_HOME
export MAVEN_HOME=/opt/module/apache-maven-3.0.5
export PATH=$PATH:$MAVEN_HOME/bin
使配置文件生效:
source /etc/profile
② 进入解压后的 Maven 目录,编辑配置文件(更改 Maven 镜像)
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
③ 查看 Maven 是否安装成功
mvn -version
tar -zxvf apache-ant-1.9.9-bin.tar.gz -C /opt/module/
② 配置环境变量
vim /etc/profile
添加以下内容:
#ANT_HOME
export ANT_HOME=/opt/module/apache-ant-1.9.9
export PATH=$PATH:$ANT_HOME/bin
使配置文件生效:
source /etc/profile
③ 查看 ant 是否安装成功
ant -version
yum install glibc-headers
yum install gcc-c++
yum install make
yum install cmake
tar -zxvf protobuf-2.5.0.tar.gz -C /opt/module/
② 配置环境变量
vim /etc/profile
添加以下内容:
#LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/opt/module/protobuf-2.5.0
export PATH=$PATH:$LD_LIBRARY_PATH
使配置文件生效:
source /etc/profile
③ 进入到解压后 protobuf 主目录,/opt/module/protobuf-2.5.0,然后相继执行命令
./configure
make
make check
make install
ldconfig
③ 查看 protobuf 是否安装成功
protoc --version
yum install openssl-devel
yum install ncurses-devel
tar -zxvf hadoop-2.7.7-src.tar.gz -C /opt/
mvn package -Pdist,native -DskipTests -Dtar
等待时间 2 小时左右。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/131606.html原文链接:https://javaforall.cn
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有