hadoop完全分布式+hive+spark

  • Post author:
  • Post category:其他




Hadoop



修改host文件 三台机器都要设置

IP1 Master
IP2 Slave1
IP3 Slave2
请修改自己对应的IP



SSH免密登录



1、在Master上生成秘钥

ssh-keygen -t rsa

一路回车,都设置为默认值,然后再当前用户的Home目录下的.ssh目录中会生成公钥文件(id_rsa.pub)和私钥文件(id_rsa)。



2、分发公钥

sh-copy-id Master
sh-copy-id Slave1
sh-copy-id Slave2

同样的在Slave1、Slave2上生成公钥和私钥后,将公钥分发到三台机器上。



环境安装



1、java

下载 jdk-8u191-linux-x64.tar.gz,解压至 /usr/local 目录下 (所有机器)

tar -zxvf jdk-8u191-linux-x64.tar.gz
mv jdk1.8.0_191 /usr/local

添加Java环境变量,在/etc/profile中添加:

export JAVA_HOME=/usr/local/jdk1.8.0_191
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/rt.jar
export JAVA_HOME PATH CLASSPATH



2、SCALA

下载scala安装包scala-2.12.7.tgz,解压至 /usr/share 目录下 (所有机器)

 tar -zxvf scala-2.12.7.tgz 
 mv scala-2.12.7 /usr/share

添加Scala环境变量,在/etc/profile中添加:

export SCALA_HOME=/usr/share/scala-2.12.7
export PATH=$SCALA_HOME/bin:$PATH

刷新生效配置

source /etc/profile



hadoop完全分布式安装

下载地址

https://archive.apache.org/dist/hadoop/common/

以下是在

Master

节点操作:

1)下载二进制包hadoop-2.8.5.tar.gz

2)解压并移动到相应目录,我习惯将软件放到/opt目录下,命令如下:

 tar -zxvf hadoop-2.8.5.tar.gz
 mv hadoop-2.8.5 /opt

3)修改相应的配置文件。

修改/etc/profile,增加如下内容:

export HADOOP_HOME=/opt/hadoop-2.8.5/
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_ROOT_LOGGER=INFO,console
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

生效配置

source /etc/profile

修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh (修改成自己对应的路径)

export JAVA_HOME=/usr/local/jdk1.8.0_191 

修改$HADOOP_HOME/etc/hadoop/slaves,将原来的localhost删除,改成如下内容:

Slave1
Slave2

修改$HADOOP_HOME/etc/hadoop/core-site.xml

<configuration>
      <property>
          <name>fs.defaultFS</name>
          <value>hdfs://Master:9000</value>
      </property>
      <property>
         <name>io.file.buffer.size</name>
         <value>131072</value>
     </property>
     <property>
          <name>hadoop.tmp.dir</name>
          <value>/opt/hadoop-2.8.5/tmp</value>
     </property>
</configuration>

修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration>
    <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>Master:50090</value>
    </property>
    <property>
      <name>dfs.replication</name>
      <value>2</value>
    </property>
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/opt/hadoop-2.8.5/hdfs/name</value>
    </property>
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/opt/hadoop-2.8.5/hdfs/data</value>
    </property>
</configuration>

复制 mapred-site.xml.template ,生成xml,命令如下:

cp mapred-site.xml.template mapred-site.xml

修改$HADOOP_HOME/etc/hadoop/mapred-site.xml

<configuration>
 <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
          <name>mapreduce.jobhistory.address</name>
          <value>Master:10020</value>
  </property>
  <property>
          <name>mapreduce.jobhistory.address</name>
          <value>Master:19888</value>
  </property>
</configuration>

修改$HADOOP_HOME/etc/hadoop/yarn-site.xml

<configuration>
     <property>
         <name>yarn.nodemanager.aux-services</name>
         <value>mapreduce_shuffle</value>
     </property>
     <property>
         <name>yarn.resourcemanager.address</name>
         <value>Master:8032</value>
     </property>
     <property>
         <name>yarn.resourcemanager.scheduler.address</name>
         <value>Master:8030</value>
     </property>
     <property>
         <name>yarn.resourcemanager.resource-tracker.address</name>
         <value>Master:8031</value>
     </property>
     <property>
         <name>yarn.resourcemanager.admin.address</name>
         <value>Master:8033</value>
     </property>
     <property>
         <name>yarn.resourcemanager.webapp.address</name>
         <value>Master:8088</value>
     </property>
</configuration>

复制Master节点的hadoop文件夹到Slave1和Slave2上

scp -r /opt/hadoop-2.8.5 root@Slave1:/opt
scp -r /opt/hadoop-2.8.5 root@Slave2:/opt

在Slave1和Slave2上分别修改/etc/profile,过程同Master一样。

在Master节点启动集群,启动之前格式化一下namenode:

#格式化
hadoop namenode -format
#启动
/opt/hadoop-2.8.5/sbin/start-all.sh

至此hadoop的完全分布式环境搭建完毕。

查看集群是否启动成功:

Master显示:
  SecondaryNameNode
  ResourceManager
  NameNode
Slave显示:
  NodeManager
  DataNode



MYSQL(已安装跳过)

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server   #时间稍微有点长

img

启动mysql

systemctl start  mysqld.service

查看密码()

grep "password" /var/log/mysqld.log
mysql -uroot -p

输入初始密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

其中‘new password’替换成你要设置的密码,注意:密码设置必须要大小写字母数字和特殊符号(,/’;:等),不然不能配置成功

开启远程

grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;
flush privileges;
exit



HIVE

下载地址

https://dlcdn.apache.org/hive/
tar -zxvf apache-hive-2.3.9-bin.tar.gz -C /opt
cd /opt/
mv apache-hive-2.3.9-bin/ hive
cd hive
cd conf/

复制hive-env.sh.template文件

cp hive-env.sh.template hive-env.sh

在hive-env.sh文件中添加

export HADOOP_HOME=/opt/hadoop-2.8.5/
export HIVE_CONF_DIR=/opt/hive/conf

在hadoop上创建文件夹

hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse

解压mysql

tar -zxvf mysql-connector-java-5.1.49.tar.gz -C /opt/
cd /opt/mysql-connector-java-5.1.49/
cp mysql-connector-java-5.1.49-bin.jar /opt/hive/lib/
cd /opt/hive/conf/
touch hive-site.xml

在hive-site.xml添加一下内容(下面的mysql需要自己信息,根据需要修改)

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://Master:3306/metastore?createDatabaseIfNotExist=true</value>
	<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
	<name>javax.jdo.option.ConnectionDriverName</name>
	<value>com.mysql.jdbc.Driver</value>
	<description>Driver class name for a JDBC metastore</description>
</property>
<property>
	<name>javax.jdo.option.ConnectionUserName</name>
	<value>root</value>
	<description>username to use against metastore database</description>
</property>
<property>
	<name>javax.jdo.option.ConnectionPassword</name>
	<value>000000</value>
	<description>password to use against metastore database</description>
</property>
</configuration>

初始化hive

cd /opt/hive bin/schematool -dbType mysql -initSchema 

启动并测试

bin/hive
show databases



Spark安装

以下操作都在Master节点进行。

下载地址

https://archive.apache.org/dist/spark/

1)下载二进制包spark-2.4.0-bin-hadoop2.7.tgz

2)解压并移动到相应目录,命令如下:

tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz
mv spark-2.4.0-bin-hadoop2.7 /opt

3)修改相应的配置文件。

修改/etc/profie,增加如下内容:

进入/opt/spark-2.4.0-bin-hadoop2.7/conf

复制 spark-env.sh.template 成

spark-env.sh

cp spark-env.sh.template spark-env.sh

修改$SPARK_HOME/conf/spark-env.sh,添加如下内容:(IP1改成自己IP)

export JAVA_HOME=/usr/local/jdk1.8.0_191
export SCALA_HOME=/usr/share/scala
export HADOOP_HOME=/opt/hadoop-2.8.5
export HADOOP_CONF_DIR=/opt/hadoop-2.8.5/etc/hadoop
export SPARK_MASTER_IP=IP1
export SPARK_MASTER_HOST=IP1
export SPARK_LOCAL_IP=IP1
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_CORES=2
export SPARK_HOME=/opt/spark-2.4.0-bin-hadoop2.7
export SPARK_DIST_CLASSPATH=$(/opt/hadoop-2.8.5/bin/hadoop classpath)

复制slaves.template成slaves

cp slaves.template slaves

修改$SPARK_HOME/conf/slaves,添加如下内容:

Master
Slave1
Slave2

将配置好的spark文件复制到Slave1和Slave2节点。

scp /opt/spark-2.4.0-bin-hadoop2.7 root@Slave1:/opt
scp /opt/spark-2.4.0-bin-hadoop2.7 root@Slave2:/opt 

修改Slave1和Slave2配置。

在Slave1和Slave2上分别修改/etc/profile,增加Spark的配置,过程同Master一样。

在Slave1和Slave2修改$SPARK_HOME/conf/spark-env.sh,将export SPARK_LOCAL_IP=114.55.246.88改成Slave1和Slave2对应节点的IP。

在Master节点启动集群。

 /opt/spark-2.4.0-bin-hadoop2.7/sbin/start-all.sh

查看集群是否启动成功:

jps
  Master在Hadoop的基础上新增了:
  Master
  
  Slave在Hadoop的基础上新增了:
  Worker



版权声明:本文为weixin_38598961原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。