大家好,又见面了,我是你们的朋友全栈君。
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 networkhostnamectl set-hostname lyhsystemctl stop firewalld② 禁止防火墙开机启动
systemctl disable firewalld③ 关闭 Selinux
vim /etc/sysconfig/selinux将 SELINUX=enforcing 改成 SELINUX=disabled
mkdir /usr/local/javatar -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/binsource /etc/profilerpm -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 是否安装成功
Hadoop 官网
mkdir /hadooptar -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/profilehadoop version
Hadoop 的运行模式包括:本地模式、伪分布式模式、完全分布式模式。
mkdir inputcp etc/hadoop/*.xml inputhadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep input/ output 'dfs[a-z.]+'
mkdir wcinputvim wc.input在文件中输入以下内容:
hadoop yarn
hadoop mapreduce
spark
sparkhadoop 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 resourcemanageryarn-daemon.sh stop nodemanagermr-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 resourcemanageryarn-daemon.sh start nodemanagermr-jobhistory-daemon.sh start historyserverhdfs dfs -rm -R /user/lyh/outputhadoop 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/hosts192.168.217.130 master
192.168.217.131 slave1
192.168.217.132 slave2scp -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 -formathadoop-daemon.sh start namenodehadoop-daemon.sh start datanode
ssh-keygen -t rsa然后敲(三个回车),就会在 .ssh 目录下生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
ssh-copy-id masterssh-copy-id slave1ssh-copy-id slave2master
slave1
slave2注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
② 同步所有节点配置文件
xsync slaveshdfs namenode -format② 启动 HDFS
start-dfs.sh③ 启动 YARN(slave1 上)
注意:NameNode 和 ResourceManger 如果不是同一台机器,不能在 NameNode 上启动 YARN,应该在 ResouceManager 所在的机器上启动 YARN。
start-yarn.shvim 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.servicecrontab -e编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate mastertar -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-headersyum install gcc-c++ yum install make yum install cmaketar -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 makemake checkmake installldconfig ③ 查看 protobuf 是否安装成功
protoc --version
yum install openssl-develyum 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