hadoop及其组件安装

2020-06-08  本文已影响0人  ZX_JS

一、hadoop安装所需环境

操作系统集群配置

搭建3节点完全分布式集群,即1个nameNode,2个dataNode,分别如下:

主机名 IP 描述
master 10.221.101.1 NameNode
slave1 10.221.101.2 DataName
slave2 10.221.101.3 DataNode

注意:创建文件或目录后,访问它节点会有权限问题,所以不建议创建,建议使用scp命令

1、创建虚拟机CentOS7并安装配置JDK,克隆两台

2、修改主机名:master、slave1、slave2

3、设置静态:10.221.101.1、10.221.101.2、10.221.101.3

4、关闭防火墙

5、免密设置

每台节点生成公钥:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

master中将公钥id_dsa.pub添加进keys,实现master免密:

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

将master中公钥分别添加到slave1及slave2的keys中,实现master对slave1及slave2节点免密:

scp ~/.ssh/id_dsa.pub  root@slave1: /opt/
cat /opt/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/id_dsa.pub  root@slave2: /opt/
cat /opt/id_dsa.pub >> ~/.ssh/authorized_keys

master执行 如下命令,进行验证

ssh master
ssh slave1
ssh slave2

6、组件所用版本

hadoop-2.7.3 
zookeeper-3.4.10
hbase-1.3.1
hive-2.1.1:-mysql
spark-2.1.0:scala
zookepper用于hbase及hive
组件安装路径:mkdir /usr/local/hadoop

二、hadoop-2.7.3安装

安装路径:mkdir /usr/local/hadoop/hadoop-2.7.3/bin/

1、解压hadoop

tar -xzvf hadoop-2.7.3/ -C /usr/local/hadoop/

2、 执行命令检查hadoop是否可用

cd /usr/local/hadoop/hadoop-2.7.3/bin/

查看是否显示hadoop版本信息Hadoop 2.7.3 显示即正常

hadoop version

3、创建所需目录

cd /usr/local/hadoop/hadoop-2.7.3
mkdir -pv tmp/dfs/{ data, name }

4、设置hadoop环境变量

vi /etc/profile
# Hadoop
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.3

#Path
PATH=PATH:JAVA_HOME/bin:JRE_HOME/binHADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile

任意目录输入 hado,然后按Tab,如果自动补全为hadoop,则说明环境变量配正确

同步到其他节点上

scp  /etc/profile root@slave1:/etc/
scp  /etc/profile root@slave2:/etc/

5、修改hadoop配置文件

cd /usr/local/hadoop/hadoop-2.7.3/etc/hadoop/

—hadoop-env.sh

vi hadoop-env.sh
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_92

—core-site.xml

vi core-site.xml
<configuration> 
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/hadoop-2.7.3/tmp</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131702</value>
    </property>
    <!--指定可以在任何IP访问-->
    <property>
        <name>hadoop.proxyuser.hduser.hosts</name>
        <value>*</value>
    </property>
    <!--指定所有用户可以访问-->
    <property>
        <name>hadoop.proxyuser.hduser.groups</name>
        <value>*</value>
    </property>
</configuration>

—hdfs-site.xml

vi hdfs-site.xml
<configuration>
    <!--指定namenode名称空间的存储地址-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/hadoop-2.7.3/hdfs/name</value>
    </property>
    <!--指定datanode数据存储地址-->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/hadoop-2.7.3/hdfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:9001</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

—mapred-site.xml

cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration>
    <!-- 配置MapReduce运行于yarn中 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
    </property>
    <!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>

—yarn-env.sh

vi yarn-env.sh
# some Java parameters
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/usr/java/jdk1.8.0_92

—yarn-site.xml

vi yarn-site.xml
<configuration>
    <!-- Site specific YARN configuration properties -->
    <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>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>1024</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</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>

— slaves

vi salves

将localhost删掉,加入如下内容,即dataNode节点的hostname

slave1
slave2

6、 以上配置同步到slave1,slave2中

scp -r /usr/local/hadoop root@slave1:/usr/local
scp -r /usr/local/hadoop root@slave2:/usr/local

7、启动hadoop

— 首次启动需要先在 master 节点进行 NameNode 的格式化:

cd /usr/local/hadoop/hadoop-2.7.3/bin
hdfs namenode -format

— 在master机器上,进入hadoop的sbin目录

cd /usr/local/hadoop/hadoop-2.7.3/sbin
./start-all.sh

8、查看是否启动成功

—jps 查看当前java的进程

输入jps 查看当前java的进程,列出当前java进程的PID和Java主类名,nameNode节点除了JPS,有3个进程

[root@master sbin]# jps
16178 NameNode
16375 SecondaryNameNode
16502 ResourceManager
16749 Jps

在slave1和slave2节点上分别输入 jps 查看进程如下,说明配置成功

[root@slave1 ~]# jps
15866 DataNode
15964 NodeManager
16061 Jps

— 查看运行状况

在浏览器访问nameNode节点的8088端口和50070端口可以查看hadoop的运行状况

192.168.1.110:50070

192.168.1.110:8088

三、zookeeper-3.4.10安装

zookeeper集群搭建要至少3个节点(master,slave1, slave2),所以三台服务器都要部署zookeeper

1、解压到安装目录

tar -xzvf zookeeper-3.4.10.tar.gz -C /usr/local/hadoop/

2、添加环境变量

vi /etc/profile
#zooleeper
export ZOOKEEPER=/usr/local/hadoop/zookeeper-3.4.10

# Path
exportPATH=PATH:JAVA_HOME/bin:JRE_HOME/bin:HADOOP_HOME/bin:HADOOP_HOME/sbin:ZOOKEEPER/bin
source /etc/profile

同步到其他节点上

scp  /etc/profile root@slave1:/etc/
scp  /etc/profile root@slave2:/etc/

3、 修改配置文件

/usr/local/hadoop/zookeeper-3.4.10/conf

cp zoo_sample.cfg  zoo.cfg
vi zoo.cfg

删除原有内容

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/usr/local/storage/zookeeper/data
dataLogDir=/usr/local/storage/zookeeper/logs 
clientPort=2181
server.1=master:2888:3888 
server.2=slave1:2888:3888 
server.3=slave2:2888:3888

4 、根据以上配置 创建zookeeper的数据文件和日志存放目录

mkdir -pv /usr/local/storage/zookeeper/{data,logs }

同步到其它节点

scp -r  /usr/local/storage/zookeeper/{data,logs } root@slave1: /usr/local/storage/zookeeper/

5 、在三台zookeeper的/usr/local/storage/zookeeper/data目录下分别创建并编辑myid

—创建

touch myid

—编辑

vi myid
echo 1 > /usr/local/storage/zookeeper/data/myid
echo 2 > /usr/local/storage/zookeeper/data/myid
echo 3 > /usr/local/storage/zookeeper/data/myid

6 、将以上配置同步到其他hadoop节点

scp -r /usr/local/hadoop/zookeeper-3.4.10 root@slave1:/usr/local/hadoop/
scp -r /usr/local/hadoop/zookeeper-3.4.10 root@slave2:/usr/local/hadoop/

7、启动zookeeper

如果zookeeper集群还没有启动的话, 首先把各个zookeeper起来。最好三个节点上同时启动

cd /usr/local/hadoop/zookeeper-3.4.10/bin
./zkServer.sh start 
./zkServer.sh status 

(1个leader,2个follower)

输入jps,会显示启动进程:QuorumPeerMain

jps

四、Hive-2.1.1安装

前提安装mysql

1、解压到安装目录

tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/local/hadoop/

2、 添加环境变量

vi /etc/profile
#hive
export HIVE_HOME=/usr/local/hadoop/apache-hive-2.1.1-bin

# Path 
export PATH=PATH:JAVA_HOME/bin:$JRE_HOME/bin:HADOOP_HOME/bin:HADOOP_HOME/sbin:ZOOKEEPER/bin:HBASE_HOME/bin:$HIVE_HOME/bin
source /etc/profile

同步到其他节点上

scp  /etc/profile root@slave1:/etc/
scp  /etc/profile root@slave2:/etc/

3 、配置文件修改

cd /usr/local/hadoop/apache-hive-2.1.1-bin/conf

—hive-env.sh

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

—hive-site.xml

cp hive-site.xml.template hive-site.xml
vi hive-site.xml
<configuration>
    <!--在hdfs上hive数据存放目录,启动hadoop后需要在hdfs上手动创建-->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>hdfs://master:9000/user/hive/warehouse</value>
    </property>
    <property>
        <name>datanucleus.readOnlyDatastore</name>
        <value>false</value>
    </property>
    <property>
        <name>datanucleus.fixedDatastore</name>
        <value>false</value>
    </property>
    <property>
        <name>datanucleus.autoCreateSchema</name>
        <value>true</value>
    </property>
    <property>
        <name>datanucleus.autoCreateTables</name>
        <value>true</value>
    </property>
    <property>
        <name>datanucleus.autoCreateColumns</name>
        <value>true</value>
    </property>
    <!--通过jdbc协议连接mysql的hive库-->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://master:3306/hive
        createDatabaseIfNotExist=trueuseSSL=false</value>
    </property>
    <!--jdbc的mysql驱动-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <!--mysql用户名-->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <!--mysql用户密码-->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>root</value>
    </property>
    <!--指定hive元数据访问路径,可以有多个,逗号分隔-->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://master:9083</value>
    </property>
    <property>
        <name>hive.exec.local.scratchdir</name>
        <value>/usr/local/storage/hive/exec</value>
     </property>
    <property>
        <name>hive.downloaded.resources.dir</name>
        <value>/usr/local/storage/hive/downloadedsource</value>
    </property>
    <!--hiveserver2的HA-->
    <property>
        <name>hive.zookeeper.quorum</name>
        <value>master,slave1,slave2</value>
    </property>
</configuration>

4、 hive lib中添加所需jar包

cd /usr/local/hadoop/apache-hive-2.1.1-bin/lib/

—添加mysql驱动

cp /root/package/hadoop/mysql-connector-java-5.1.38.jar /usr/local/hadoop/apache-hive-2.1.1-bin/lib/

【以下可不配置】

—从hbase/lib下复制必要jar包

cp /usr/local/hadoop/hbase-1.3.1/lib/hbase-client-1.3.1.jar 
/usr/local/hadoop/apache-hive-2.1.1-bin/lib/
cp /usr/local/hadoop/hbase-1.3.1/lib/hbase-common-1.3.1.jar /usr/local/hadoop/apache-hive-2.1.1-bin/lib/

—同步hive和hadoop的jline版本

cp /usr/local/hadoop/apache-hive-2.1.1-bin/lib/jline-2.12.jar 

/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib

查看版本

cd /home/hadoop/hadoop/share/hadoop/yarn/lib 
find ./ -name "jlinejar" 

若有低版本则删除

例如:jline 0.9 rm jline-0.9.94.jar

—复制jdk的tools.jar

cp $JAVA_HOME/lib/tools.jar /usr/local/hadoop/apache-hive-2.1.1-bin/lib/

5 、在配置的mysql中创建hive库

create database hive;

【需外界可连接上】

6 、hdfs创建存储数据的目录

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

7、 启动hive

hive 远程服务 (端口号10000) 启动方式[metastore和hiveserver2在同一台上启动即可]

nohup /usr/local/hive/bin/hive --service metastore &> metastore.log &  
nohup /usr/local/hive/bin/hive --service hiveserver2 &> hiveserver2.log 

hive 命令行模式

hive 

或者输入

hive --service cli

查看进程为:2个RunJar

注意:可以在任意一台服务器上启动hive,都可以。

8 、查看启动进程

通过命令 jps 可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode进程

Jps

Master上:

29162 RunJar
28442 HMaster
28049 ResourceManager
28999 RunJar
27607 NameNode
29328 Jps
28571 HRegionServer
27448 QuorumPeerMain
27802 SecondaryNameNode

在 Slave 节点可以看到 DataNode 和 NodeManager 进程

Slave上:

30086 RunJar
28962 DataNode
29834 HRegionServer
30245 RunJar
28868 QuorumPeerMain
29075 NodeManager

程序启动成功后可以在任意一台启动hive

可以在启动MR-JobHistory服务,

sbin/mr-jobhistory-daemon.sh start historyserver

Hadoop2 MR-JobHistory服务介绍

1)MR-JobHistory服务目标

主要是向用户提供历史的mapred Job 查询

详细解释:

a)在运行MR Job时,MR 的 ApplicationMaster会根据mapred-site.xml配置文件中的配置,将MR Job的job history信息保存到指定的hdfs路径(首先保存到临时目录,然后mv到最终目录)

b)如果在yarn-site.xml中,没有配置nodemanage的LogAggregation功能,则historyserver无法提供mr日志明细查询的功能(在提交mr job时,yarn和mapred的配置都是必须的)

c)historyserver向外提供两个接口,web接口可以提供jobhistory和明细日志查询的功能,而restApi只提供jobhistory查询的功能

五、Hbase-1.3.1安装

1、 解压到安装目录

tar -zxvf hbase-1.3.1-bin.tar.gz -C /usr/local/hadoop/

2、添加环境变量

vi /etc/profile
#Hbase
export HBASE_HOME=/usr/local/hadoop/hbase-1.3.1

# Path
export PATH=PATH:JAVA_HOME/bin:JRE_HOME/bin:HADOOP_HOME/bin:HADOOP_HOME/sbin:ZOOKEEPER/bin:$HBASE_HOME/bin
source /etc/profile

同步到其他节点上

scp  /etc/profile root@slave1:/etc/
scp  /etc/profile root@slave2:/etc/

3、配置文件修改

/usr/local/hadoop/hbase-1.3.1/conf

—regionservers 文件

vi  regionservers 
master
slave1
slave2

—hbase-env.sh

vi hbase-env.sh
#The java implementation to use.  Java 1.7+ required.
export JAVA_HOME=/usr/java/jdk1.8.0_92

# Tell HBase whether it should manage it's own instance of Zookeeper or not.
# 禁用Hbase自带zookeeper
export HBASE_MANAGES_ZK=false

—hbase-site.xml

vi hbase-site.xml
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:9000/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master,slave1,slave2</value>
    </property>
    <property>
        <name>hbase.tmp.dir</name>
        <value>/usr/local/storage/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/usr/local/storage/zookeeper/data</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
    <property>
        <name>hbase.master.info.port</name>
        <value>60010</value>
    </property>
</configuration>

4、创建hbase-site.xml配置文件中的hbase目录

mkdir /usr/loca/storage/hbase

同步软件到其他节点

scp -r  /usr/loca/storage/hbase root@slave1: /usr/loca/storage/
scp -r  /usr/loca/storage/hbase root@slave2: /usr/loca/storage/

5、同步上述配置到其他节点

scp -r /usr/local/hadoop/hbase-1.3.1 root@slave1: /usr/local/hadoop/
scp -r  /usr/local/hadoop/hbase-1.3.1 root@slave2: /usr/local/hadoop/

6、启动Hbase

—启动

/usr/local/hadoop/hbase-1.3.1/bin
./start-hbase.sh

—验证安装成功

hbase shell

—查看进程为:HMaster,HRegionServer

jps

主节点:HMaster,HRegionServer

从节点:HRegionServer

—通过web UI访问hbase状态

http://192.168.1.110:16010/master-status

上一篇 下一篇

猜你喜欢

热点阅读