CentOS 7 环境下 Hadoop-2.7.6 与HBase-1.4.4 分布式安装

1. 虚拟机配置

安装3个机器,机器名称分别叫CentOS Master、Slave1、Slave2(说明机器名不这么叫可以,待会用hostname命令修改也行)。

如图:

   

修改机器名:https://blog.csdn.net/summer_huan/article/details/76104611

修改这/etc/hosts文件,在文件中添加以下内容:

192.168.10.132  master

192.168.10.132 slave1

192.168.10.132 slave2

使用scp命令将hosts文件传给其他虚拟机:

# scp  /etc/hosts root@slave01:/etc/hosts

# scp  /etc/hosts root@slave02:/etc/hosts


2. 安装JDK1.8

详细过程请参考:https://blog.csdn.net/hui_2016/article/details/69941850


3. SSH配置

修改hosts文件:假设有三台机器,192.168.1.131, 192.168.1.132, 192.168.1.133,hostname分别是master, slave1, slave2

1.1          在master上生成一对公钥和密钥

dev@master:~$ ssh-keygen -t dsa -P '' -f~/.ssh/id_dsa

1.2          将公钥拷贝到自己

dev@master:~$ cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys

1.3          将公钥拷贝到其他机器

dev@master:~$ scp ~/.ssh/id_dsa.pubdev@slave1:~

dev@master:~$ scp ~/.ssh/id_dsa.pubdev@slave2:~

#追加到authorized_keys

dev@master:~$ ssh slave1

dev@slave01:~$ mkdir .ssh

dev@slave01:~$ cat id_dsa.pub >>.ssh/authorized_keys

dev@slave01:~$ exit

dev@master:~$ ssh slave2

dev@slave02:~$ mkdir .ssh

dev@slave02:~$ cat id_dsa.pub >>.ssh/authorized_keys

dev@slave02:~$ exit

1.4          设置.ssh目录和authorized_keys文件的权限

在被登录的每台机器上,执行如下命令:

chmod 755 .ssh

chmod 600 ~/.ssh/authorized_keys

1.5          测试一下

#在 master执行

dev@master:~$ ssh slave1

第一次还是需要密码的,exit退出再试一次,就不需要密码了。

如果登陆不上,试试先关闭所有机器的防火墙,例如Ubuntu的命令是:

dev@slave1:~$ sudo ufw disable


4. 安装配置Hadoop

复制:

#cp <download_path>/ hadoop-2.7.6.tar.gz /opt/hadoop-2.7.6.tar.gz

解压:

# tar -zxvf hadoop-2.7.6.tar.gz

HBase包的操作类似。


1. 新建目录:

#mkdir  /root/hadoop
#mkdir  /root/hadoop/tmp  
#mkdir  /root/hadoop/var  
#mkdir  /root/hadoop/dfs  
#mkdir  /root/hadoop/dfs/name  
#mkdir  /root/hadoop/dfs/data
2. 修改core-site.xml

 在<configuration>节点内加入配置:

<property>
        <name>hadoop.tmp.dir</name>
        <value>/root/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
   </property>
   <property>
        <name>fs.default.name</name>
      <value>hdfs://master:9000</value>
   </property>

 3. 修改hadoop-env.sh

export   JAVA_HOME=/usr/java/jdk1.8.0_171

 4. 修改hdfs-site.xml

   在<configuration>节点内加入配置:
<property>
   <name>dfs.name.dir</name>
   <value>/root/hadoop/dfs/name</value>
   <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
   <name>dfs.data.dir</name>
   <value>/root/hadoop/dfs/data</value>
   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
   <name>dfs.replication</name>
   <value>2</value>
</property>
<property>
      <name>dfs.permissions</name>
      <value>false</value>
      <description>need not permissions</description>
</property>

5. 新建并且修改mapred-site.xml

在<configuration>节点内加入配置:
<property>
    <name>mapred.job.tracker</name>
    <value>master:49001</value>
</property>

<property>
      <name>mapred.local.dir</name>
       <value>/root/hadoop/var</value>
</property>

<property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>

6. 修改slaves文件

slave1

slave2

6. 修改yarn-site.xml文件

在<configuration>节点内加入配置:
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
   </property>

   <property>
        <description>The address of the applications manager interface in the RM.</description>
        <name>yarn.resourcemanager.address</name>
        <value>${yarn.resourcemanager.hostname}:8032</value>
   </property>

   <property>
        <description>The address of the scheduler interface.</description>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>${yarn.resourcemanager.hostname}:8030</value>
   </property>

   <property>
        <description>The http address of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>${yarn.resourcemanager.hostname}:8088</value>
   </property>

   <property>
        <description>The https adddress of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.https.address</name>
        <value>${yarn.resourcemanager.hostname}:8090</value>
   </property>

   <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>${yarn.resourcemanager.hostname}:8031</value>
   </property>

   <property>
        <description>The address of the RM admin interface.</description>
        <name>yarn.resourcemanager.admin.address</name>
        <value>${yarn.resourcemanager.hostname}:8033</value>
   </property>

   <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
   </property>

   <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>2048</value>
   </property>

   <property>
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
        <value>2.1</value>
   </property>

   <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>2048</value>
</property>

   <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
</property>

7. 分发配置文件

$ cd$HADOOP_PREFIX/etc/hadoop

$ scp hadoop-env.shmapred-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves hadoop@slave1:$HADOOP_PREFIX/etc/hadoop

$ scp hadoop-env.shmapred-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves hadoop@slave2:$HADOOP_PREFIX/etc/hadoop

8. 启动Hadoop

在NameNode这个机器(在这里是master)上执行下列命令,

#只需一次,下次启动不再需要格式化,只需start-dfs.sh

$ hdfs namenode -format

$ start-dfs.sh

启动Yarn

在ResourceManager这台机器(在这里仍然是master)上执行,

$ start-yarn.sh

注意:这里出现过多次启动后,datanode无法启动的问题,我把namenode和datanode文件夹中的内容全部删除,重新运行上述命令,启动成功。

用./jps查看java进程。

在master上,应该有三个进程,NameNode, SecondaryNameNode, ResourceManger;在每台slave上,应该有两个进程,DataNode, NodeManager

5. 安装配置HBase

#mkdir  /root/hbase
#mkdir  /root/hbase/tmp  
#mkdir  /root/hbase/zookeeper
#mkdir  /root/hbase/zookeeper/data  

1. 修改hbase-site.xml

<?xml version="1.0"?>
<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>/root/hbase/tmp</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/root/hbase/zookeeper/data</value>
  </property>

</configuration>

2. 配置regionservers

slave1

slave2

3. 配置hbase-env.sh

增:

export JAVA_HOME=${JAVA_HOME}

export HBASE_MANAGES_ZK=true (使用HBase自带Zookeeper)

启动

bin/start-hbase.sh

验证 HBase 成功安装

在 master 运行 jps 应该会有HMaster进程。在各个 slave 上运行jps应该会有HQuorumPeer,HRegionServer两个进程。

在浏览器中输入http://master:16010 可以看到 HBase Web UI 。

控制台

bin/hbase shell
创建表和列族
create 'test', 'cf'
显示已经创建的表
list
向test表中插入数据
put 'test', 'row1', 'cf:a', 'hello,world'
扫描显示test表中全部数据
scan 'test'
获取test表中指定行的数据
get 'test', 'row1'

6. 问题总结

猜你喜欢

转载自blog.csdn.net/xiaof22a/article/details/80213064