基础部分
一、基础搭建
1、更改主机名
● 更改主机名为master:hostnamectl set-hostname master 同理修改slave1和slave2的主机名
hostnamectl命令详解
(1)查看主机相关信息:hostnamectl 或者hostnamectl status (2)修改主机名:hostnamectl set-hostname 新主机名
参考文章: Linux 命令之 hostnamectl – 查看/修改当前主机的信息
2、配置hosts文件(三台机器都要执行)
● 编辑hosts文件:vim /etc/hosts 编辑etc中的hosts文件 输入各节点的IP和主机名
3、关闭防火墙
● 关闭防火墙:systemctl stop firewalld ● 查看防火墙状态:systemctl status firewalld
参考文章: systemctl命令详解(此处仅用到了防火墙的开关以及状态查看,其余有空可以详细地学习一下)
4、时间同步
● 选择时区:tzselect
注意:tzselect命令用于选择时区。要注意的是tzselect只是帮我们把选择的时区显示出来,并不会实际生效,也就是说它仅仅告诉我们怎么样去设置环境变量TZ。(TZ = Time Zone)如果你要永久更改时区,按照tzselect命令提示的信息,在.profile或者/etc/profile中设置正确的TZ环境变量并导出。
参考文章: Linux tzselect --选择时区
(该部分缺少ntp时间同步,整理完全过程再细学一下这里)
5、配置ssh免密
● 在master上生成公私密钥:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa ● 将master公钥id_dsa复制到slave1和slave2上,并进行公钥认证(可以通过远程登录进行验证): ssh-copy-id -i /root/.ssh/id_dsa.pub slave1 ssh-copy-id -i /root/.ssh/id_dsa.pub slave2 ● 退出连接:exit 同理可以将master公钥复制到master上或配置其他免密。
DSA:digital signature Algorithm 数字签名。 RSA:既可以数字签名又可以加密。
ssh-keygen常用参数详解
选项 | 详解 |
---|
-t | 指定生成密钥的类型,默认使用SSH2d的rsa | -f | 指定生成密钥的文件名,默认id_rsa(私钥id_rsa,公钥id_rsa.pub) | -P | 提供旧密码,空表示不需要密码(-P ‘’) | -N | 提供新密码,空表示不需要密码(-N ‘’) | -b | 指定密钥长度(bits),RSA最小要求768位,默认是2048位;DSA密钥必须是1024位(FIPS 1862标准规定) | -C | 提供一个新注释 | -R hostname | 从known_hosta(第一次连接时就会在家目录.ssh目录下生产该密钥文件)文件中删除所有属于hostname的密钥 |
ssh-copy-id命令详解 (1)作用:ssh-copy-id 将你的公共密钥填充到一个远程机器上的authorized_keys文件中。 (2)语句:ssh-copy-id [-i [公钥在本主机上的路径]] [user@] 远程机器主机名
参考文章: ssh-keygen常用选项详解 ssh-copy-id命令详解 & 使用ssh-keygen和ssh-copy-id三步实现SSH无密码登录 ssh命令详解
二、安装JDK
● 解压jdk压缩包至/usr/java中:tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/java (在master执行) ● 修改环境变量:vim /etc/profile ,添加内容如下(在master执行): 此处并未明白环境变量的详解
export JAVA_HOME=/usr/java/jdk1.8.0_202
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
生效profile文件:source /etc/profile (在master执行) ● 查看java版本:java -version 这里出现版本与所安装版本不同的情况,即安装为1.8.0_202版本,而此处显示为1.8.0_131版本
● 在master中将JDK复制到slave1和slave2中(master执行) tar -zcvf /usr/java/jdk1.8.0_202.tar.gz jdk1.8.0_202 scp /usr/java/jdk1.8.0_202.tar.gz root@slave1:/usr scp /usr/java/jdk1.8.0_202.tar.gz root@slave2:/usr ● 并在slave1和slave2中解压并配置环境变量,检查java版本是否正确
tar常用选项详解
选项 | 详解 |
---|
-z | 是否同时具有gz属性 | -x | 解压缩、提取打包的内容 | -c | 建立一个压缩,打包文档 | -v | 显示压缩或者打包的内容 | -f | 使用文件名,在f后面要接压缩后的文件的名字,只要用到tar命令,-f选项是必须要用的,-f参数在使用的时候一定排在其他参数的后面,在最右边 | -C | 切换到指定目录,表示指定解压缩包的内容和打包的内容存放的目录 |
(1)解压tar.gz文件:tar -zxvf 解压文件路径 -C 解压后存放的路径 (2)压缩文件夹为tar.gz文件:tar -zcvf 打包后生成的文件名全路径 要打包的目录
scp命令常用详解
(1)从远处复制文件到本地目录
单个文件:scp [用户名]@[服务器名或ip]:[远程机器文件的路径] [本地的指定目录]
递归复制整个目录的文件:scp -r [用户名]@[服务器名或ip]:[远程机器文件夹的路径] [本地的指定目录]
(2)上传本地文件到远程机器指定目录
单个文件:scp [本地文件的路径] [用户名]@[服务器名或ip]:[远程机器的指定目录]
递归复制整个目录的文件:scp -r [本地文件夹的路径] [用户名]@[服务器名或ip]:[远程机器的指定目录]
参考文章: Linux压缩打包命令——tar、zip、unzip Linux下压缩某个文件夹(文件夹打包) Linux安装JDK1.8后,java -version仍然显示版本为1.7的问题 Linux scp命令参数详解
三、安装zookeeper
● 解压zookeeper至/usr/zookeeper中:tar -zxvf zookeeper-3.4.5-cdh5.10.0.tar.gz -C /usr/zookeeper
在zookeeper目录中,创建配置中所需要的zkdata和zkdatalog两个文件夹(在master执行):
cd /usr/zookeeper/zookeeper-3.4.5-cdh5.10.0
mkdir zkdata
mkdir zkdatalog
● 配置文件zoo.cfg(在master执行) 将simple配置文件拷贝为默认配置文件:
cd /usr/zookeeper/zookeeper-3.4.5-cdh5.10.0/conf
mv zoo_simple.cfd zoo.cfd
对 zoo.cfd文件配置如下:vim zoo.cfg
ticktime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zookeeper/zookeeper-3.4.5-cdh5.10.0/zkdata
clientPort=2181
dataLogDir=/usr/zookeeper/zookeeper-3.4.5-cdh5.10.0/zkdatalog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
● 进入zkdata文件夹,创建myid文件,用于表示是几号服务器 cd /usr/zookeeper/zookeeper-3.4.5-cdh5.10.0/zkdata vim myid 编辑内容为1,即1号服务器
● 远程发送zookeeper给slave1和slave2,接收后更改myid文件 scp -r /usr/zookeeper root@slave1:/usr scp -r /usr/zookeeper root@slave2:/usr ● 添加zookeeper环境变量:vim /etc/profile
export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.5-cdh5.10.0
export PATH=$PATH:&ZOOKEEPER_HOME/bin
生效:source /etc/profile ● 启动zookeeper集群 在Zookeeper启动的时候出现了报错,可能是先前的zookeeper是直接对电脑进行强制关机所导致的。 报错代码:Starting zookeeper ... already running as process 5688. ,使用kill -9 杀死线程后,开启及状态均正常 ● jps查看进程:
zoo.cfg文件配置详解
参数 | 详解 |
---|
tickTime | 基本事件单元,以毫秒为单位。这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔 tickTime时间就会发送一个心跳。 | dataDir | 存储内存中数据库快照的位置,顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。 | clientPort | 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。 | initLimit | 这个配置项是用来配置 Zookeeper 接受客户端初始化连接时最长能忍受多少个心跳时间间隔数,当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。 | syncLimit | 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒 | server.A = B:C:D | A 表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader |
参考文章: ZooKeeper配置文件zoo.cfg详解 Zookeeper启动报错 Starting zookeeper … already running as process 5688.
四、安装hadoop
4.1解压 hadoop 安装包
● 解压hadoop至/usr/hadoop中(在master中进行):tar -zxvf hadoop-2.7.7.tar.gz -C /usr/hadoop ● 添加hadoop环境变量(三台机器执行):vim /etc/profile
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin
生效:source /etc/profile
4.2配置 hadoop 各组件
● 编辑 hadoop-env.sh 配置文件
cd $HADOOP_HOME/etc/hadoop
vim hadoop-env.sh
修改java环境变量:export JAVA_HOME=/usr/java/jdk1.8.0_202
● 编辑 core-site.xml 文件
<configuration>
<!-- 定义文件系统的实现,默认是file:///本地文件系统 需要我们改成 hdfs://分布式文件存储系统 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 临时数据存放的位置 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hadoop-2.7.7/hdfs/tmp</value>
</property>
<!-- 缓冲区大小,实际工作中根据服务器性能动态调整 -->
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!-- fs.checkpoint.period 同步检查时间,缺省是3600秒1小时。测试时设为20秒 -->
<property>
<name>fs.checkpoint.period</name>
<value>60</value>
</property>
<!-- fs.checkpoint.size 当edit 日志文件大于这个字节数时,即使检查时间没到,也会触发同步 -->
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
</configuration>
*master:在主节点的 ip 或者映射名。 *9000:主节点和从节点配置的端口都是9000。 ● 编辑 mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
添加如下:
<!-- 指定我们mapreduce运行在yarn集群上面 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
● 修改 yarn-site.xml
<configuration>
<!-- RM对客户端暴露的地址,客户端通过该地址向RM提交应用程序等 -->
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<!-- RM对AM暴露的地址,AM通过地址想RM申请资源,释放资源等 -->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<!-- RM对外暴露的web http地址,用户可通过该地址在浏览器中查看集群信息 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<!-- RM对NM暴露地址,NM通过该地址向RM汇报心跳,领取任务等 -->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<!-- 管理员可以通过该地址向RM发送管理命令等 -->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- -->
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapreduce.ShuffleHandler</value>
</property>
</configuration>
● 编辑 hdfs-site.xml
<configuration>
<!-- 配置系统自动数据备份数量为3份(默认是3份) -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- NameNode 元数据存放位置 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/software/hadoop-2.7.7/hdfs/name</value>
<final>true</final>
</property>
<!-- DataNode在本地磁盘存放block的位置 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/software/hadoop-2.7.7/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.hosts</name>
<value>/usr/software/hadoop-2.7.7/conf/datanode-allow.list</value>
<description>允许加入集群的节点列表</description>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/software/hadoop-2.7.7/conf/datanode-deny.list</value>
<description>拒绝加入集群的节点列表</description>
</property>
</configuration>
● 编辑 slaves 文件:删除localhost ,添加slave1 和slave2 ,使 master 仅作为名称节点来使用(master文件???) ● 远程发送zookeeper给slave1和slave2(别忘记配置 hadoop 环境变量) scp -r /usr/hadoop root@slave1:/usr scp -r /usr/hadoop root@slave2:/usr
4.3格式化 hadoop 并开启 hadoop 集群
● 格式化 namenode :hadoop namenode -format 出现Exiting with status 0 的时候,表示格式化成功 ● 开启 hadoop 集群(仅在master上开启),回到 hadoop 目录:sbin/start-all.sh
hadoop中常用文件夹及作用简介
文件夹名称 | 作用 |
---|
bin | shell脚本 | sbin | shell脚本,如启动hdfs需要用到 | etc/hadoop | 所有配置文件的路径 | lib/native | 本地的C程序库 |
hadoop六个配置文件详解
配置文件 | 作用 |
---|
core-site.xml | 核心配置文件,主要定义了我们文件访问的格式 hdfs:// | hadoop-env.sh | 主要配置我们的java路径 | hdfs-site.xml | 主要定义配置我们的hdfs的相关配置 | mapred-site.xml | 主要定义我们的mapreduce相关的一些配置 | slaves | 控制我们的从节点在哪里 datanode nodemanager在哪些机器上 | yarm-site.xml | 配置我们的resourcemanager资源调度 |
参考文章: 详解Hadoop六个配置文件的作用 namenode崩溃的数据恢复测试 yarn-site.xml参数配置详解
五、安装hbase
六、安装hive
提高部分
七、Spark安装
|