一、 Hadoop介绍
** HDFS:分布式存储文件 //用来存数据
角色:NameNode和DataNode
** YARN:分布式资源调度框架(Hadoop2.x以上才引用) //调用计算机资源来进行操作
角色:ResourceManager和NodeManager
** MapReduce:分布式数据处理框架 //用来对数据分析
** 解压Hadoop
tar -zxf xxx.tar.gz -C xxxx
** Hadoop完全分布式配置
** 准备部署的环境:
linux01 linux02 linux03
namenode resourcemanager
datanode datanode datanode
nodemanager nodemanager nodemanager
** 进入到hadoop的etc/hadoop目录下
删除windows脚本:
$ rm -rf *.cmd
** 重命名文件:
$ mv mapred-site.xml.template mapred-site.xml
配置文件:
evn文件:只需要修改JAVA_HOME,我的机器:/home/admin/modules/jdk1.8.0_181
//查看java_home的路径 echo $JAVA_HOME
hadoop-env.sh
yarn-env.sh
mapred-env.sh
site文件:
core-site.xml
<configuration>
<!--【这里的值指的是默认的HDFS路径。这里只有一个HDFS集群,在这里指定!该值来自于hdfs-site.xml中的配置】-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<!--【这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/export/server/hadoop-2.7.4/data/temp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<!-- 指定数据冗余份数 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 关闭权限检查-->
<property>
<name>dfs.permissions.enable</name>
<value>false</value>
</property>
<!-- secondary namenode 所在主机的 ip 和端口-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:50090</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>node1:50070</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
** yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://node1:19888/jobhistory/logs/</value>
</property>
</configuration>
** mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
</configuration>
slaves文件:从节点
node1
node2
node3
/export/server/hadoop-2.7.4
** 分发安装配置完成的hadoop到linux02以及linux03
$ scp -r hadoop-2.7.4/ node2:/export/server
$ scp -r hadoop-2.7.4/ node3:/export/server
scp -r /etc/profile node2:/etc/profile
** 格式化namenode(尖叫提示:在hadoop的根目录下执行)
$ bin/hdfs namenode -format
** 启动服务
HDFS:
$ sbin/start-dfs.sh
YARN:(尖叫提示:一定要在ResourceManager所在机器启动 linux02)
$ sbin/start-yarn.sh
JobHistoryServer:
$ sbin/mr-jobhistory-daemon.sh start historyserver
三、常用工具脚本
** 概念梳理
** 系统变量与用户变量
** 使用CRT开启一个远程会话的时候,计算机默认加载:
/etc/profile //系统变量
/home/admin/.bash_profile //用户变量
/home/admin/.bashrc //用户变量
** 使用SSH访问另一台机器的时候,不加载系统变量
** 操作
** 将系统变量追加到用户变量中(3台机器都要操作)
$ cat /etc/profile >> .bashrc //两个大于号是追加的意思
** 编写脚本
#!/bin/bash
for i in admin@linux01 admin@linux02 admin@linux03
do
echo "==================$i==================="
ssh $i 'jps'
done