Hadoop企业级部署
node01 :主节点,将node02和node03的磁盘挂载过来
node02 :从节点
node03 :从节点
一、磁盘挂载
-
查看磁盘命令
fdisk -l
-
查看磁盘挂载情况
df -h
-
新磁盘先格式化才能挂载xfs/ext4(node02)
# 在Linux系统上创建XFS文件系统 mkfs.xfs -f /dev/sdb mkfs.xfs -f /dev/sdc
-
开始挂载磁盘(本机)(node02)
# 先创建一个文件夹 mkdir /storage01 mkdir /storage02 # 开始挂载 mount /dev/sdb /storage01 mount /dev/sdc /storage02
# 取消挂载(不用执行) umount /storage01 umount /storage02
-
将其他虚拟机的磁盘挂载到另一台虚拟机需要借助nfs挂载技术 (node02)
# 安装 yum -y install nfs-utils # 修改配置(挂载权限) vim /etc/exports # 添加两行 /storage01 *(rw,sync,no_subtree_check) /storage02 *(rw,sync,no_subtree_check) # 授权 chmod 777 /storage01 chmod 777 /storage02 # 设置为开机自动挂载磁盘 vim /etc/fstap # 添加两行 /dev/sdb /storage01 xfs defaults 0 0 /dev/sdc /storage02 xfs defaults 0 0 # 启动nfs服务 systemctl start nfs-server # 设置开机自启 systemctl enable nfs-server
-
至此,node02配置完成,node03也类似
-
开始配置node01
# 创建挂载点,修改权限 mkdir -p /storage/storage01 mkdir -p /storage/storage02 mkdir -p /storage/storage03 mkdir -p /storage/storage04 chmod -R 777 /storage # 修改配置 vim /etc/fstab # 添加下方4行 192.168.48.20:/storage01 /storage/storage01 nfs vers=3,async,noatime,nodiratime 0 0 192.168.48.20:/storage02 /storage/storage02 nfs vers=3,async,noatime,nodiratime 0 0 192.168.48.30:/storage03 /storage/storage03 nfs vers=3,async,noatime,nodiratime 0 0 192.168.48.30:/storage04 /storage/storage04 nfs vers=3,async,noatime,nodiratime 0 0 # 挂载 mount -a
二、安装Hadoop
-
上传压缩包解压
tar -zxvf hadoop-3.3.1.tar.gz -C /opt/module/
-
修改 /opt/module/hadoop-3.1.3/etc/hadoop/ 下的配置文件
-
修改 hadoop-env.sh
# 添加如下内容 export JAVA_HOME=/opt/module/jdk1.8.0_211 # 指明JDK环境的位置 export HADOOP_HOME=/opt/module/hadoop-3.3.1 # 指明Hadoop安装位置 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop # 指明Hadoop配置文件目录位置 export HADOOP_LOG_DIR=$HADOOP_HOME/logs # 指明Hadoop运行日志目录位置
-
修改 core-site.xml
<configuration> <!-- 指定NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://node01:9000</value> </property> <!-- 指定hadoop数据的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-3.3.1/data</value> </property> <!-- 配置HDFS网页登录使用的静态用户为root --> <property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property> <!-- 配置该root(superUser)允许通过代理访问的主机节点 --> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <!-- 配置该root(superUser)允许通过代理用户所属组 --> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> <!-- 配置该root(superUser)允许通过代理的用户--> <property> <name>hadoop.proxyuser.root.users</name> <value>*</value> </property> </configuration>
-
修改 hdfs-site.xml
<configuration> <!-- nn web端访问地址--> <property> <name>dfs.namenode.http-address</name> <value>node01:50070</value> </property> <!-- 2nn web端访问地址--> <property> <name>dfs.namenode.secondary.http-address</name> <value>node01:9868</value> </property> <!-- 测试环境指定HDFS副本的数量1 --> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
-
修改 mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
修改 yarn-site.xml
<configuration> <!-- 指定MR走shuffle --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>node01</value> </property> <!-- 环境变量的继承 --> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property> <!-- yarn容器允许分配的最大最小内存 --> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>512</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>4096</value> </property> <!-- yarn容器允许管理的物理内存大小 --> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>4096</value> </property> <!-- 关闭yarn对物理内存和虚拟内存的限制检查 --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> </configuration>
-
修改 workers
node02 node03
-
注意:分发给其他节点,并修改其他节点的hdfs-site.xml文件,添加如下
<!-- node02 hdfs的真实数据路径 --> <property> <name>dfs.datanode.data.dir</name> <value>file:///storage01,file:///storage02</value> </property> <!-- node03 hdfs的真实数据路径 --> <property> <name>dfs.datanode.data.dir</name> <value>file:///storage03,file:///storage04</value> </property>
-
-
在每个节点配置环境变量 /etc/profile
export JAVA_HOME=/opt/module/jdk1.8.0_211 export PATH=$PATH:$JAVA_HOME/bin export HADOOP_HOME=/opt/module/hadoop-3.3.1 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
-
在node01节点添加root用户权限的环境变量 /etc/profile
export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root
-
在node01节点初始化namenode
hdfs namenode -format
-
在node01启动hdfs和yarn,使用jps查看每个节点的进程
start-dfs.sh start-yarn.sh
-
在web端查看hdfs, 50070端口号是自己在hdfs-site.xml中设置的
http://192.168.48.10:50070/
-
如果想在web网页端向hdfs上传文件,需要在本地windows的hosts文件中配置IP映射
192.168.48.10 node01 192.168.48.20 node02 192.168.48.30 node03
重点:
-
配置历史服务器 (mapred-site.xml):为了查看程序的历史运行情况,需要配置一下历史服务器。
<!-- 历史服务器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>node01:10020</value> </property> <!-- 历史服务器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>node01:19888</value> </property>
-
配置日志聚集(yarn-site.xml):应用运行完成以后,将程序运行日志信息上传到HDFS系统上,可以方便的查看到程序运行详情,方便开发调试
<!-- 开启日志聚集功能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 设置日志聚集服务器地址 --> <property> <name>yarn.log.server.url</name> <value>http://node01:19888/jobhistory/logs</value> </property> <!-- 设置日志保留时间为7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
-
启动历史服务器,前提是hdfs和yarn都启动了
# 启动历史服务器 mapred --daemon start historyserver # web端页面访问 http://192.168.48.10:19888/ # jps进程查看会多了一个JobHistoryServer服务