前提:白熊搞了三台笔记本,并将其统一刷成了centos7.6的系统,下面是Hadoop集群的详细安装过程。
一、安装ifconfig服务
- 三台机器都要执行以下命令
yum install -y net-tools.x86_64
二、将三台服务器的IP地址改为静态IP
-
更改配置文件,添加以下内容
-
MyNode01
# 笔记本刷linux系统,只需更改连接wifi的那个网络即可 # 打开配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 修改内容 BOOTPROTO="static" # 设置 ONBOOT = yes # 添加内容 BROADCAST=192.168.2.255 IPADDR=192.168.2.114 NETMASK=255.255.255.0 GATEWAY=192.168.2.1 # 如ping不通外网,则添加本机的DNS DNS1=192.168.2.1
-
MyNode02
# 笔记本刷linux系统,只需更改连接wifi的那个网络即可 # 打开配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 修改内容 BOOTPROTO="static" # 设置 ONBOOT = yes # 添加内容 BROADCAST=192.168.2.255 IPADDR=192.168.2.115 NETMASK=255.255.255.0 GATEWAY=192.168.2.1 # 如ping不通外网,则添加本机的DNS DNS1=192.168.2.1
-
MyNode03
# 笔记本刷linux系统,只需更改连接wifi的那个网络即可 # 打开配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 修改内容 BOOTPROTO="static" # 设置 ONBOOT = yes # 添加内容 BROADCAST=192.168.2.255 IPADDR=192.168.2.116 NETMASK=255.255.255.0 GATEWAY=192.168.2.1 # 如ping不通外网,则添加本机的DNS DNS1=192.168.2.1
-
重启网络服务
service network restart
-
三台服务器的IP地址分别为:
- 192.168.2.114
- 192.168.2.115
- 192.168.2.116
三、关闭防火墙
- 三台机器都要执行
systemctl disable firewalld.service
四、关闭selinux
- 三台机器都要执行
vim /etc/selinux/config
SELINUX=disabled
五、更改主机名称
- 192.168.2.114
vim /etc/hostname
MyNode01
- 192.168.2.115
vim /etc/hostname
MyNode02
- 192.168.2.116
vim /etc/hostname
MyNode03
六、添加主机名与IP的映射关系
- 三台机器都要执行
vim /etc/hosts
192.168.2.114 MyNode01 192.168.2.115 MyNode02 192.168.2.116 MyNode03
七、添加普通用户
- 三台机器都要执行
- root和普通用户的密码都是123456(仅限测试)
- 添加普通用户 icebear
useradd icebear
passwd 123456
- 普通用户添加sudo权限,文件末尾添加即可
visudo
miller ALL=(ALL) ALL
八、设置免密登录
- 最好root和icebear用户都设置一下,这里以icebear用户为例
- 三台机器都要执行
# 切换成icebear用户 su icebear # 回到根目录 cd # 生成密钥,一路回车即可 ssh-keygen -t rsa # 将公钥拷贝到MyNode01机器上的authorized_keys文件中(三台机器都要) cd .ssh ssh-copy-id MyNode01
- MyNode01机器上执行
- 将authorized_keys文件拷贝到其他机器上
cd /home/icebear/.ssh scp authorized_keys MyNode02:$PWD scp authorized_keys MyNode03:$PWD
- 将authorized_keys文件拷贝到其他机器上
- 重启
- 三台机器都要执行
reboot
- 免密登录测试
- 三台机器都分别连接一下,因为首次连接要进行确认
su MyNode01 ssh MyNode02 ssh MyNode03
- 三台机器都分别连接一下,因为首次连接要进行确认
九、创建安装目录
- 三台机器都要执行(root用户)
# 软件压缩包目录 mkdir -p /home/bgd/soft # 软件安装目录 mkdir -p /home/bgd/install # 为icebear用户添加操作权限 chown -R icebear:icebear /home/bgd
十、安装JDK
- MyNode01机器上执行(icebear用户)
- jdk下载
- 将jdk软件包上传到MyNode01机器的soft文件夹中
- 解压
cd /home/bgd/soft # 解压软件包到安装目录 tar -zxf jdk-8u181-linux-x64.tar.gz -C /home/bgd/install/
- 修改环境变量
sudo vim /etc/profile #添加以下配置内容,配置jdk环境变量 export JAVA_HOME=/home/bgd/install/jdk1.8.0_141 export PATH=:$JAVA_HOME/bin:$PATH
- 使环境变量生效
source /etc/profile
- 查看java版本
java -version
十一、安装和配置Hadoop
- MyNode01机器上执行(icebear用户)
- 安装包下载
- 上传hadoop安装包,并解压
tar -xzvf hadoop-2.6.0-cdh5.14.2.tar.gz -C /home/bgd/install
- 配置hadoop环境变量
sudo vim /etc/profile # 添加如下内容 JAVA_HOME=/home/bgd/install/jdk1.8.0_141 HADOOP_HOME=/home/bgd/install/hadoop-2.6.0-cdh5.14.2 PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export JAVA_HOME export HADOOP_HOME export PATH
- 使环境变量生效
source /etc/profile
- 查看Hadoop的版本信息
hadoop version
- 配置hadoop-env.sh
sudo vim /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/home/bgd/install/jdk1.8.0_141
- 配置core-site.xml
sudo vim /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://MyNode01:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/tempDatas</value> </property> <!-- 缓冲区大小,实际工作中根据服务器性能动态调整 --> <property> <name>io.file.buffer.size</name> <value>4096</value> </property> <property> <name>fs.trash.interval</name> <value>10080</value> <description>检查点被删除后的分钟数。 如果为零,垃圾桶功能将被禁用。 该选项可以在服务器和客户端上配置。 如果垃圾箱被禁用服务器端,则检查客户端配置。 如果在服务器端启用垃圾箱,则会使用服务器上配置的值,并忽略客户端配置值。</description> </property> <property> <name>fs.trash.checkpoint.interval</name> <value>0</value> <description>垃圾检查点之间的分钟数。 应该小于或等于fs.trash.interval。 如果为零,则将该值设置为fs.trash.interval的值。 每次检查指针运行时, 它都会从当前创建一个新的检查点,并删除比fs.trash.interval更早创建的检查点。</description> </property> </configuration>
- 配置hdfs-site.xml
sudo vim /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/hdfs-site.xml
<configuration> <!-- NameNode存储元数据信息的路径,实际工作中,一般先确定磁盘的挂载目录,然后多个目录用,进行分割 --> <!-- 集群动态上下线 <property> <name>dfs.hosts</name> <value>/home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/accept_host</value> </property> <property> <name>dfs.hosts.exclude</name> <value>/home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/deny_host</value> </property> --> <property> <name>dfs.namenode.secondary.http-address</name> <value>MyNode02:50090</value> </property> <property> <name>dfs.namenode.http-address</name> <value>MyNode01:50070</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:///home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/namenodeDatas</value> </property> <!-- 定义dataNode数据存储的节点位置,实际工作中,一般先确定磁盘的挂载目录,然后多个目录用,进行分割 --> <property> <name>dfs.datanode.data.dir</name> <value>file:///home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/datanodeDatas</value> </property> <property> <name>dfs.namenode.edits.dir</name> <value>file:///home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/edits</value> </property> <property> <name>dfs.namenode.checkpoint.dir</name> <value>file:///home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/snn/name</value> </property> <property> <name>dfs.namenode.checkpoint.edits.dir</name> <value>file:///home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/snn/edits</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> <property> <name>dfs.blocksize</name> <value>134217728</value> </property> </configuration>
- 配置mapred-site.xml
cd /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop
cp mapred-site.xml.template mapred-site.xml
sudo vim /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/mapred-site.xml
<!--指定运行mapreduce的环境是yarn --> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.job.ubertask.enable</name> <value>true</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>MyNode01:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>MyNode01:19888</value> </property> </configuration>
- 配置yarn-site.xml
sudo vim /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>MyNode01</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.log.server.url</name> <value>http://MyNode01:19888/jobhistory/logs</value> </property> <!--多长时间聚合删除一次日志 此处--> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>2592000</value><!--30 day--> </property> <!--时间在几秒钟内保留用户日志。只适用于如果日志聚合是禁用的--> <property> <name>yarn.nodemanager.log.retain-seconds</name> <value>604800</value><!--7 day--> </property> <!--指定文件压缩类型用于压缩汇总日志--> <property> <name>yarn.nodemanager.log-aggregation.compression-type</name> <value>gz</value> </property> <!-- nodemanager本地文件存储目录--> <property> <name>yarn.nodemanager.local-dirs</name> <value>/home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/yarn/local</value> </property> <!-- resourceManager 保存最大的任务完成个数 --> <property> <name>yarn.resourcemanager.max-completed-applications</name> <value>1000</value> </property> </configuration>
- 编辑slaves
sudo vim /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/slaves
MyNode01 MyNode02 MyNode03
- 创建文件存放目录
mkdir -p /home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/tempDatas mkdir -p /home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/namenodeDatas mkdir -p /home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/datanodeDatas mkdir -p /home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/edits mkdir -p /home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/snn/name mkdir -p /home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/snn/edits
十二、复制配置好的Hadoop到其他机器中
- MyNode01机器执行(icebear用户)
- 删除doc用户文档
cd /home/bgd/install/hadoop-2.6.0-cdh5.14.2/share/
rm -rf doc/
- 复制Hadoop到其他机器上
cd /home/bgd/
sudo scp -r hadoop-2.6.0-cdh5.14.2 MyNode02:$PWD
sudo scp -r hadoop-2.6.0-cdh5.14.2 MyNode03:$PWD
- 复制全局变量到其他机器上
sudo scp /etc/profile MyNode02:/etc/
sudo scp /etc/profile MyNode03:/etc/
- 删除doc用户文档
- 三台机器都执行(icebear用户)
- 使环境变量生效
source /etc/profile
- 查看Hadoop版本
hadoop version
- 使环境变量生效
十三、为普通用户增加目录权限
- 三台机器都执行
chown -R icebear:icebear /home/bgd
chmod -R 755 /home/bgd
十四、格式化Hadoop
- MyNode01机器上执行(icebear用户)
su icebear
hdfs namenode -format
十五、启动/停止Hadoop集群
- MyNode01机器上执行(icebear用户)
- 启动
start-all.sh
- 停止
stop-all.sh
- 启动
十六、查看web界面
- 配置用户主机的hosts文件(以Mac系统为例)
vim /etc/hosts
# 添加配置 192.168.2.114 MyNode01 192.168.2.115 MyNode02 192.168.2.116 MyNode03
- 浏览器中输入
- 若用户主机没有配置hosts文件