Hadoop install

Hadoop install

Step1:集群角色规划

  • 角色规划的准则

    根据软件工作特性和服务器硬件资源情况合理分配比如依赖内存工作的NameNode是不是部署在大内存机器上?

  • 角色规划注意事项

    资源上有抢夺冲突的,尽量不要部署在一起工作上需要互相配合的。尽量部署在一起

服务器运行角色
Sparknamenode datanode resourcemanager nodemanager
Spark01secondarynamenode datanode nodemanager
Spark02datanode nodemanager

升级操作系统和软件

Centos 7:
yum -y update

升级后建议重启

安装常用软件

yum -y install gcc gcc-c++ autoconf automake cmake ntp ntpdate rsync ssh vim man zip unzip net-tools zlib zlib-devel openssl openssl-devel pcre-devel tcpdump lrzsz

修改主机名

hostnamectl set-hostname hadoop
或者
vim /etc/hostname 
Spark
reboot

修改IP地址

vim /etc/sysconfig/network-scripts/ifcfg-ens32

网卡 配置文件示例

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens32"
UUID="19fba887-d2d4-4c85-9675-d314b44ac4f1"
DEVICE="ens32"
ONBOOT="yes"
IPADDR="192.168.18.2"
PREFIX="24"
GATEWAY="192.168.18.1"
DNS1="223.5.5.5"
IPV6_PRIVACY="no"

保存后
systemctl restart network
或者
service network restart
重启网络服务

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

#service iptables stop   #关闭防火墙
#chkconfig iptables off  #禁止开机启动
vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
# SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
# SELINUXTYPE=targeted 

SELINUX=disabled

执行下面命令

setenforce 0
创建统一工作目录(3台机器)
	mkdir -p /export/servers/    #软件安装路径
	mkdir -p /export/data/      #数据存储路径
	mkdir -p /export/software/  #安装包存放路径

创建软件安装目录并上传软件,配置环境变量

上传jdk到/export/softwares路径下去,并解压
tar -zxvf jdk-8u141-linux-x64.tar.gz -C ../servers/

mv jdk1.8.0_301 jdk8

配置环境变量:
vim ~/.bashrc 或者
vim /etc/profile

在文件末尾:
修改完成之后记得
source /etc/profile 生效

Mysql

卸载mariadb
rpm -qa | grep -i mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
rpm -qa|grep mariadb
下载安装包
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.25-1.el7.x86_64.rpm-bundle.tar

下载好的直接传入安装包

mkdir /export/software/
tar xvf mysql-8.0.25-1.el7.x86_64.rpm-bundle.tar  -C ../server/

解压安装包到指定目录
tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C mysql
保留最少安装文件
cd mysql
rm -rf *debug*
装mysql
rpm -ivh *.rpm  --force --nodeps
查看是否安装成功
mysqladmin --version
启动mysql
systemctl start mysqld
systemctl enable mysqld
查看初始密码
grep 'temporary password' /var/log/mysqld.log
登录mysql
mysql -h localhost -uroot -p
mysql环境清空屏幕
system clear
修改密码
SHOW VARIABLES LIKE 'validate_password%';
mysql> set global validate_password_policy=LOW
    -> ;
Query OK, 0 rows affected (0.01 sec)

mysql> set global validate_password_length=6;
Query OK, 0 rows affected (0.00 sec)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
flush privileges;

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

update mysql.user set host = '%',plugin='mysql_native_password' where user='root';
flush privileges;

quit;

重启mysql服务
systemctl restart mysqld
登录mysql
mysql -h 127.0.0.1 -uroot -p
查看字符集
show variables like'%character%';
exit

编辑配置文件修改服务器端字符集

vim /etc/my.cnf
#在[mysqld]下面增加
character-set-server=utf8
重启mysql服务
systemctl restart mysqld
自此Mysql 安装完毕

虚拟机克隆

将之前的一台变成3台

1.打开虚拟机。
修改里面的东西。
 1、ip   
vim /etc/sysconfig/network-scripts/ifcfg-ens33 
重启网络:
service network restart
systemctl restart network
2.hostname主机名

hostnamectl set-hostname Spark
或者
vim /etc/hostname 
hadoop

修改完之后 ping 百度和自己的ip测试,能否ping通。
虚拟机重启一下:

集群时间同步(3台机器)
	yum -y install ntpdate
	ntpdate ntp4.aliyun.com

Hadoop 安装:

tar -zxvf hadoop-3.3.1.tar.gz
mv hadoop-3.3.1 hadoop3

vim ~/.bashrc
	
export JAVA_HOME=/opt/soft/jdk8
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

export HADOOP_HOME=/opt/soft/hadoop3
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

编辑完成后使用source命令使文件~/.bash_profile生效执行以下命令
source ~/.bashrc
source /etc/profile
检查环境变量
printenv

修改如下配置文件

  • hadoop-env.sh
  • core-site.xml
  • hdfs-site.xml
  • workers
  • mapred-site.xml
  • yarn-site.xml

hadoop-env.sh

hadoop-env.sh
	cd /export/server/hadoop-3.1.4/etc/hadoop/
	vim hadoop-env.sh
	
#配置JAVA_HOME
export JAVA_HOME=/export/server/jdk8
#设置用户以执行对应角色shell命令
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 

core-site.xml

 <property>
        <name>fs.defaultFS</name>
        <value>hdfs://Spark:9000</value>
    </property>
    <!--HDFS读取文件的缓冲大小-->
     <property>
       <name>io.file.buffer.size</name>
       <value>4096</value>
    </property>
	<!-- 临时文件存储目录 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/soft/hadoop/datas/tmp</value>
	</property>
    <property>
    	<name>hadoop.http.staticuser.user</name>
    	<value>root</value>
    </property>
      <!--  开启hdfs的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟 -->
	<property>
		<name>fs.trash.interval</name>
		<value>10080</value>
	</property>
   <property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

hdfs-site.xml

<!--配置hdfs文件系统的副本数-->
<property>
      <name>dfs.replication</name>
      <value>3</value>
</property>
<!--指定hdfs文件系统的元数据存放目录-->
<property>
		<name>dfs.namenode.name.dir</name>
	   <value>file:///export/server/hadoop3/datas/namenode/namenodedatas</value>
	</property>
<!--对于新文件切分的大小,单位byte。默认是64M,建议是128M。每一个节点都要指定,包括客户端 -->
	<property>
		<name>dfs.blocksize</name>
		<value>134217728</value>
	</property>
<!--NameNode用来处理来自DataNode的RPC请求的线程数量,一般在10~200个之间  -->
	<property>
		<name>dfs.namenode.handler.count</name>
		<value>10</value>
	</property>
<!--指定hdfs文件系统的数据块存放目录-->
	<property>
		<name>dfs.datanode.data.dir</name>
	  <value>file:///export/server/hadoop3/datas/datanode/datanodeDatas</value>
	</property>
<!--配置HDFS的web管理地址-->
	<property>
		<name>dfs.namenode.http-address</name>
		<value>Spark:50070</value>
	</property>
<!--指定hdfs文件系统权限是否开启-->
	<property>
		<name>dfs.permissions.enabled</name>
		<value>false</value>
	</property>
<!--配置secondaryNamenode的web管理地址-->
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>Spark01:50090</value>
	</property>
<!--配置是否打开web管理-->
   <property>
     <name>dfs.webhdfs.enabled</name>
     <value>true</value>
  </property>

mapred-site.xml

<!--指定mapreduce运行的框架名-->
     <property>
          <name>mapreduce.framework.name</name>
         <value>yarn</value>
        <final>true</final>
    </property>
	<property>
		<name>mapreduce.map.memory.mb</name>
		<value>1024</value>
	</property>
	<property>
		<name>mapreduce.map.java.opts</name>
		<value>-Xmx512M</value>
	</property>
	<property>
		<name>mapreduce.reduce.memory.mb</name>
		<value>1024</value>
	</property>
	<property>
		<name>mapreduce.reduce.java.opts</name>
		<value>-Xmx512M</value>
	</property>
	<property>
		<name>mapreduce.task.io.sort.mb</name>
		<value>256</value>
	</property>
	<property>
		<name>mapreduce.task.io.sort.factor</name>
		<value>100</value>
	</property>
	<property>
		<name>mapreduce.reduce.shuffle.parallelcopies</name>
		<value>25</value>
	</property>
    <!-- 历史服务器端地址 --> 
    <property> 
        <name>mapreduce.jobhistory.address</name> 
        <value>Spark:10020</value>
    </property>
   <!-- 历史服务器web端地址 -->
    <property> 
        <name>mapreduce.jobhistory.webapp.address</name> 
        <value>Spark:19888</value>
    </property>
	<property>
		<name>mapreduce.jobhistory.intermediate-done-dir</name>
	<value>/export/server/hadoop3/datas/jobhsitory/intermediateDoneDatas</value>
	</property>
	<property>
		<name>mapreduce.jobhistory.done-dir</name>
		<value>/export/server/hadoop3/datas/jobhsitory/DoneDatas</value>
	</property>
	<property>
	  <name>yarn.app.mapreduce.am.env</name>
	  <value>HADOOP_MAPRED_HOME=/export/server/hadoop3</value>
	</property>
	<property>
	  <name>mapreduce.map.env</name>
	  <value>HADOOP_MAPRED_HOME=/export/server/hadoop3/</value>
	</property>
	<property>
	  <name>mapreduce.reduce.env</name>
	  <value>HADOOP_MAPRED_HOME=/export/server/hadoop</value>
	</property>

Yarn.site.xml

<!--指定resourcemanager所启动服务的主机名/ip-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Spark</value>
</property>
<!--指定mapreduce的shuffle处理数据方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--配置resourcemanager内部通讯地址-->
<property>
<name>yarn.resourcemanager.address</name>
<value>Spark:8032</value>
</property>
<!--配置resourcemanager的scheduler组件的内部通信地址-->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>Spark:8030</value>
</property>
<!--配置resource-tracker组件的内部通信地址-->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>Spark:8031</value>
</property>
<!--配置resourcemanager的admin的内部通信地址-->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>Spark:8033</value>
</property>
<!--配置yarn的web管理地址-->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Spark:8088</value>
</property>

<!--yarn的聚合日志是否开启-->
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>
<!--聚合日志报错hdfs上的时间-->
  <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>86400</value>
  </property>
  <!--聚合日志的检查时间段-->
  <property>
    <name>yarn.log-aggregation.retain-check-interval-seconds</name>
    <value>3600</value>
  </property>
  <property>
    <name>yarn.nodemanager.log.retain-seconds</name>
    <value>10800</value>
  </property>
<!--当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效)-->
  <property>
    <name>yarn.nodemanager.remote-app-log-dir</name>
    <value>/export/server/hadoop3/datas/remoteAppLog/remoteAppLogs</value>
  </property>

Works

cd /export/server/hadoop-3.1.4/etc/hadoop/
vim works

配置映射信息
vim /etc/hosts
将配置好的hadoop 发送给其他节点
cd /export/server
scp -r hadoop root@Spark01:$PWD
scp -r hadoop root@Spark02:$PWD

配置免密登录:

在3台机器都要敲下面的命令  都会生成
ssh-keygen -t rsa (四个回车)
//执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
在第一台机器 免密3台 分别数3次命令
ssh-copy-id Spark
ssh-copy-id Spark01
ssh-copy-id Spark02


将修改后的环境变量同步其他机器
	scp /etc/profile root@Spark01:/etc/
	scp /etc/profile root@Spark02:/etc/
重新加载环境变量 验证是否生效(3台机器)	
	source /etc/profile
	hadoop #验证环境变量是否生效

初始化

hdfs namenode -format

在Spark上,使用软件自带的shell脚本一键启动
前提:配置好机器之间的SSH免密登录和workers文件。
HDFS集群
	start-dfs.sh 
	stop-dfs.sh 
YARN集群
	start-yarn.sh
	stop-yarn.sh
Hadoop集群
	start-all.sh
	stop-all.sh 

HDFS 初体验
shell命令操作
	hadoop fs -mkdir /Test
	hadoop fs -put zookeeper.out /Test
	hadoop fs -ls /
	
	MapReduce+YARN 初体验
执行Hadoop官方自带的MapReduce案例
	评估圆周率π的值
	cd /export/server/hadoop-3.1.4/share/hadoop/mapreduce/
	hadoop jar hadoop-mapreduce-examples-3.3.1.jar pi 2 4
	
	
	hadoop jar /export/server/hadoop-3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.3.1-tests.jar TestDFSIO -write -nrFiles 10  -fileSize 10MB



整合Spark3:

mv spark-3.3.0-bin-hadoop3 spark3

vim /etc/profile
export SPARK_HOME=/EXPORT/servers/spark-2.4.5 export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin 
source /etc/profile
修改配置
文件位置:$SPARK_HOME/conf
修改文件:slaves、spark-defaults.conf、spark-env.sh、log4j.properties
more slaves

 修改配置文件 
1) 进入解压缩后路径的 conf 目录,修改 slaves.template 文件名为 slaves
mv slaves.template slaves
2) 修改 slaves 文件,添加 work 节点

mv spark-env.sh.template spark-env.sh

spark.master spark://Spark:7077
spark.eventLog.enabled true 
spark.eventLog.dir hdfs://Spark:9000/spark-eventlog
spark.serializer org.apache.spark.serializer.KryoSerializer 
spark.driver.memory 512m


# 设置JAVA安装目录
JAVA_HOME=/export/server/jdk

# HADOOP软件配置文件目录,读取HDFS上文件和运行Spark在YARN集群时需要,先提前配上
HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
YARN_CONF_DIR=/export/server/hadoop/etc/hadoop

# 指定spark老大Master的IP和提交任务的通信端口
SPARK_MASTER_HOST=node1
SPARK_MASTER_PORT=7077

SPARK_MASTER_WEBUI_PORT=8080

SPARK_WORKER_CORES=1
SPARK_WORKER_MEMORY=1g



cd $SPARK_HOME/sbin ./start-all.sh

修改配置文件名称

mv spark-env.sh.template spark-env.sh

修改配置文件

vim spark-env.sh

增加如下内容:

# 设置JAVA安装目录
JAVA_HOME=/export/server/jdk

# HADOOP软件配置文件目录,读取HDFS上文件和运行Spark在YARN集群时需要,先提前配上
HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
YARN_CONF_DIR=/export/server/hadoop/etc/hadoop

# 指定spark老大Master的IP和提交任务的通信端口
SPARK_MASTER_HOST=node1
SPARK_MASTER_PORT=7077

SPARK_MASTER_WEBUI_PORT=8080

SPARK_WORKER_CORES=1
SPARK_WORKER_MEMORY=1g
4.分发

将配置好的将 Spark 安装包分发给集群中其它机器,命令如下:

cd /export/server/

scp -r spark-3.0.1-bin-hadoop2.7 root@node2:$PWD

scp -r spark-3.0.1-bin-hadoop2.7 root@node3:$PWD

创建软连接

ln -s /export/server/spark-3.0.1-bin-hadoop2.7 /export/server/spark


1.集群启动和停止

在主节点上启动spark集群

/export/server/spark/sbin/start-all.sh 

在主节点上停止spark集群

/export/server/spark/sbin/stop-all.sh

 

在主节点上单独启动和停止Master:

start-master.sh

stop-master.sh

在从节点上单独启动和停止Worker(Worker指的是slaves配置文件中的主机名)

start-slaves.sh

stop-slaves.sh


2.jps查看进程

node1:master

node2/node3:worker

3.http://node1:8080/

/export/server/spark/bin/spark-shell --master spark://node1:7077


  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值