分布式hadoop 部署
Posted 醉卧千山下,诗酒趁年华。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式hadoop 部署相关的知识,希望对你有一定的参考价值。
1.安装并配置Hadoop
mkdir -p /usr/hadoop && cd /usr/package277/
tar -zxvf hadoop-2.7.7.tar.gz -C /usr/hadoop/
xsync.sh /usr/hadoop/
将Hadoop安装目录配置到环境变量中,方便后续使用:
vim /etc/profile
# hadoop
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7/
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
xsync.sh /etc/profile
source /etc/profile
安装成功后我们进行Hadoop的基本配置分别编辑core-site.xml
以及hdfs-site.xml
与yarn-site.xml
的配置文件:
cd $HADOOP_HOME/etc/hadoop
1.hadoop-env.sh运行环境 ======================
vim hadoop-env.sh
echo $JAVA_HOME
echo "export JAVA_HOME=/usr/java/jdk1.8.0_221" >> hadoop-env.sh
2.core-site.xml全局参数============================
vim core-site.xml # 增加如下内容
#namenode 主机为master 端口9000
#临时目录位置为绝对路径 /root/hadoopData/tmp
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoopData/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>fs.checkpoint.period</name>
<value>60</value>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
</configuration>
三台机器都创建
mkdir -p /root/hadoopData/tmp
3,hdfs-site.xml配置文件============================
vim hdfs-site.xml # 增加如下内容
# namenode临时文件所存放的目录
# datanode临时文件所存放的目录
# 关闭权限校验 集群间用hostname通信
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/hadoopData/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hadoopData/data</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.datanode.use.datanode.hostname</name>
<value>true</value>
</property>
</configuration>
三台机器都创建
mkdir -p /root/hadoopData/name
mkdir -p /root/hadoopData/data
4,YARN框架运行环境============================
echo "export JAVA_HOME=/usr/java/jdk1.8.0_221" >> yarn-env.sh
5.YARN框架的核心配置============================
vim yarn-site.xml # 增加如下内容
<configuration>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<!-- 指定reducer获取数据的方式-->
<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.mapred.ShuffleHandler</value>
</property>
</configuration>
6,拷贝并编辑MapReduce的配置文件:
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml # 增加如下内容
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
7,配置从节点:
echo master > master && echo slave1 > slaves && echo slave2 >> slaves
8,分发到其它服务器上
cd /usr/hadoop
xsync.sh hadoop-2.7.7
2.格式化Hadoop并启停
在Master中对NameNode进行格式化操作:
hdfs namenode -format
启动集群:
start-all.sh
start-dfs.sh
start-yarn.sh
查看进程:
jps
# 查看是否有以下几个进程
# Master节点:
6256 Jps
5843 ResourceManager
5413 NameNode
5702 SecondaryNameNode
# Slave节点
6256 Jps
5538 DataNode
5945 NodeManager
访问监控主页:
在浏览器上访问主节点的50070端口:192.168.42.128:50070
。可以访问50070端口就代表集群中的HDFS是正常的。
访问主节点的8088端口,这是YARN的web服务端口,例如:192.168.42.128:8088
。
关闭节点:
stop-dfs.sh
stop-yarn.sh
===================================================
集成HIVE
1.mysql
- 关闭开机自启服务
1.配置过本地源了,安装MySQL Server
安装MySQL:yum -y install mysql-community-server
systemctl disable mysqld
#开启服务
systemctl start mysqld
#查看密码
grep "temporary password" /var/log/mysqld.log
mysql -uroot -p
E&po>2BCjekL
#设置密码强度为低级:
set global validate_password_policy=0;
#设置密码长度:
set global validate_password_length=4;
#修改本地密码:
alter user 'root'@'localhost' identified by '123456';
设置远程登录
以新密码登陆MySQL:mysql -uroot -p123456
创建用户:create user 'root'@'%' identified by '123456';
允许远程连接:grant all privileges on *.* to 'root'@'%' with grant option;
刷新权限:flush privileges;
创建数据库hive;
create database hive character set utf8;
2.安装Hive 注意操作的机器
首先下载Hive_2.3.6
mkdir -p /usr/hive
cd /usr/package277/
tar -zxvf apache-hive-2.3.4-bin.tar.gz -C /usr/hive/
修改环境变量:
vim /etc/profile
# HIVE
export HIVE_HOME=/usr/hive/apache-hive-2.3.4-bin
export PATH=$PATH:$HIVE_HOME/bin
# 刷新配置
source /etc/profile
设置HIVE运行环境
1.运行环境 ==============
cd $HIVE_HOME/conf && cp hive-env.sh.template hive-env.sh && vim hive-env.sh
# 配置Hadoop安装路径
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
# 配置Hive配置文件存放路径
export HIVE_CONF_DIR=/usr/hive/apache-hive-2.3.4-bin/conf
# 配置Hive运行资源库路径
export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.3.4-bin/lib
2.版本冲突=============两个机器都执行
cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/
分发
xsync.sh $HADOOP_HOME/share/hadoop/yarn/lib/
3.分发=============
xsync.sh apache-hive-2.3.4-bin/
xsync.sh /etc/profile
source /etc/profile
3.HIVE 元数据配置到MySQL
1,因为服务端需要和Mysql通信,所以服务端需要将Mysql的依赖包放在Hive的lib目录下。
cd /usr/package277
cp mysql-connector-java-5.1.47-bin.jar $HIVE_HOME/lib
2,Slave1作为服务器端配置hive
cd $HIVE_HOME/conf
vim hive-site.xml
<configuration>
<!-- Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!-- 数据库连接driver,即MySQL驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 数据库连接JDBC的URL地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<!-- MySQL数据库用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- MySQL数据库密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
</configuration>
4.Master作为客户端配置hive
1.=============
cd /usr/package277
cp mysql-connector-java-5.1.47-bin.jar $HIVE_HOME/lib
2.==============
cd $HIVE_HOME/conf
vim hive-site.xml
<configuration>
<!-- Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!--- 使用本地服务连接Hive,默认为true-->
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<!-- 连接服务器-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://slave1:9083</value>
</property>
</configuration>
5 .HIVE 元数据配置到MySQL
1.初始化数据库
slave1上:
schematool -dbType mysql -initSchema
2.启动hive server服务
设置成远程模式之后必须保证先启动metastore服务或者进程,之后才能进行开启客户端。
hive --service metastore(注意空格)
3.启动hive client 在master上
hive
4,创建数据库hongyaa
hive>create database hive;
===============================================
增删节点
-
修改主机名用hostnamectl命令
关闭防火墙 systemctl stop firewalld 关闭开机启动 systemctl disable firewalld.service hostnamectl set-hostname slave3 bash
-
修改host文件
先免密登录,然后修改下分发文件脚本 ssh-copy-id slave3 vim /etc/hosts 192.168.5.100 master 192.168.5.101 slave1 192.168.5.102 slave2 172.16.10.0 slave3 source /etc/profile
-
时区修改成上海时区(CST +0800时区)
tzselect TZ='Asia/Shanghai'; export TZ date 查看 echo "TZ='Asia/Shanghai'; export TZ" >> /etc/profile && source /etc/profile
-
每十分钟同步一次时间
crontab -e */10 * * * * /usr/sbin/ntpdate master crontab -l #安装和启动NTP yum install -y ntp ntpdate master
-
分发jdk 和环境变量
xsync.sh /usr/java/jdk1.8.0_221/ xsync.sh /etc/profile source /etc/profile mkdir -p /root/hadoopData/tmp mkdir -p /root/hadoopData/name mkdir -p /root/hadoopData/data 分发hadoop
-
启动节点进程
启动datanode进程:$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode
启动nodemanage进程:$HADOOP_HOME/sbin/yarn-daemon.sh start nodemanager
-
查看集群状态
主节点刷新:hdfs dfsadmin -refreshNodes 均衡block:sbin/start-balancer.sh 查看存活的节点:hdfs dfsadmin -report 可以通过浏览器查看50070
二,永久删除:(通过此步骤执行)
1. 注意版本号
master主机中hdfs-site.xml配置如下
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/hadoop/hadoop-2.7.7/etc/hadoop/excludes</value>
<description>拒绝加入集群的节点列表</description>
</property>
2.然后在conf目录下创建一个excludes文件,将需要删除的节点机器名添加到文件中即可。
3.强制重新加载配置:
主节点刷新所有DataNode:hdfs dfsadmin -refreshNodes
查看存活的节点:hdfs dfsadmin -report
4.删除节点上关闭进程:(slave2)
hadoop-daemon.sh stop datanode
yarn-daemon.sh stop nodemanager
5.(时间间隔较久,500s)再次查看节点状态:hdfs dfsadmin -report
6.最后更新集群配置
数据块重新分布:sbin/start-balancer.sh(数据均衡)
从NameNode的excludes文件及slaves文件、hosts文件中去掉已经移除的主机名
以上是关于分布式hadoop 部署的主要内容,如果未能解决你的问题,请参考以下文章
大数据之---hadoop伪分布式部署(HDFS)全网终极篇