0%

Hadoop Hbase Pseudo-Distributed Local Install 安装记录

今天部署了一下hadoop和hbase,期间踩了不少坑。写此文以帮助hadoop、hbase的新手避坑。

不要选择最新的软件
不要选择最新的软件
不要选择最新的软件
重要的事情说三遍

安装包下载

jdk:

hadoop:

hbase:

百度云:

jdk

将压缩包解压放置于你喜欢的目录,并进入该目录,笔者放在了/home/bruce/Software。
编辑/etc/profile文件,添加环境变量

1
2
3
4
5
export JAVA_HOME=/home/bruce/Software/jdk1.8.0_191
export JAR_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JAR_HOME/lib:$CLASSPATH
export PATH=$PATH:$JAVA_HOME/bin:$JAR_HOME/bin

Hadoop

安装依赖

首先安装以下软件:

1
2
$ sudo apt-get install ssh
$ sudo apt-get install rsync

下载Hadoop:

将压缩包解压放置于你喜欢的目录,并进入该目录,笔者放在了/home/bruce/Software。

1
cd hadoop-2.9.2/

可以在/etc/profile中为hadoop添加环境变量:

1
2
3
export Hadoop=/home/bruce/Software/hadoop-2.9.2/bin

export PATH=$PATH:$JAVA_HOME/bin:$JAR_HOME/bin:$Hadoop

修改配置:

etc/hadoop/core-site.xml:

1
2
3
4
5
6
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

etc/hadoop/hdfs-site.xml:

1
2
3
4
5
6
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

修改 etc/hadoop/hadoop-env.sh 文件:
在文件末尾加入

1
export JAVA_HOME=/home/bruce/Software/jdk1.8.0_191

配置无密码ssh登录

确认是否可以无密码登录:

1
ssh localhost

若不可以则执行以下操作:

1
2
3
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

本地运行一个 MapReduce job

  1. 格式化文件系统

    1
    bin/hdfs namenode -format
  2. Start NameNode daemon and DataNode daemon:

    1
    sbin/start-dfs.sh

运行完后应该可以访问http://localhost:50070/

  1. Make the HDFS directories required to execute MapReduce jobs:

    1
    2
    bin/hdfs dfs -mkdir /user
    bin/hdfs dfs -mkdir /user/<username>
  2. Copy the input files into the distributed filesystem:

    1
    bin/hdfs dfs -put etc/hadoop input
  3. Run some of the examples provided:

    1
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar grep input output 'dfs[a-z.]+'

执行 jps 可以看到以下进程:

1
2
3
4
5
$ jps
15975 Jps
15017 NameNode
15389 SecondaryNameNode
15182 DataNode
  1. Examine the output files: Copy the output files from the distributed filesystem to the local filesystem and examine them:
1
2
bin/hdfs dfs -get output output
cat output/*

成功的话会得到如下输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
6	dfs.audit.logger
4 dfs.class
3 dfs.logger
3 dfs.server.namenode.
2 dfs.audit.log.maxbackupindex
2 dfs.period
2 dfs.audit.log.maxfilesize
1 dfs.log
1 dfs.file
1 dfs.servers
1 dfsadmin
1 dfsmetrics.log
1 dfs.replication

or

View the output files on the distributed filesystem:

1
bin/hdfs dfs -cat output/*

会得到一样的输出

Hbase

下载Hbase:

将压缩包解压放置于你喜欢的目录,并进入该目录,笔者放在了/home/bruce/Software。

1
cd hbase-1.4.9/

可以在/etc/profile中为hbase添加环境变量:

1
2
3
export Hbase=/home/bruce/Software/hbase-1.4.9/bin

export PATH=$PATH:$JAVA_HOME/bin:$JAR_HOME/bin:$Hadoop:$Hbase

修改配置

  1. 编辑 conf/hbase-site.xml 文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <configuration>
    <property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>
    </property>
    <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    </property>
    <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hadoop/zookeeper</value>
    </property>

    </configuration>
  2. 编辑 conf/hbase-env.sh 文件
    在文件末尾加入:

    1
    export JAVA_HOME=/home/bruce/Software/jdk1.8.0_191
  3. 启动hbase

    1
    bin/start-hbase.sh

若启动成功,执行jps会看到一下进程:

1
2
3
4
5
6
7
8
$ jps
16503 HMaster
16951 Jps
15017 NameNode
16426 HQuorumPeer
15389 SecondaryNameNode
15182 DataNode
16639 HRegionServer
  1. hdfs会自动生成hbase目录
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ ./bin/hadoop fs -ls /hbase
    Found 8 items
    drwxr-xr-x - hadoop supergroup 0 2019-04-23 23:33 /hbase/.tmp
    drwxr-xr-x - hadoop supergroup 0 2019-04-23 23:33 /hbase/MasterProcWALs
    drwxr-xr-x - hadoop supergroup 0 2019-04-23 23:33 /hbase/WALs
    drwxr-xr-x - hadoop supergroup 0 2019-04-23 23:33 /hbase/data
    drwxr-xr-x - hadoop supergroup 0 2019-04-23 23:33 /hbase/hbase
    -rw-r--r-- 1 hadoop supergroup 42 2019-04-23 23:32 /hbase/hbase.id
    -rw-r--r-- 1 hadoop supergroup 7 2019-04-23 23:32 /hbase/hbase.version
    drwxr-xr-x - hadoop supergroup 0 2019-04-23 23:34 /hbase/oldWALs

以上操作可以使用root用户进行操作。也可以使用普通用户,若遇到权限问题,可以添加一个hadoop用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#添加用户
sudo addgroup hadoop
sudo adduser -g hadoop hadoop

#为新用户添加root权限
sudo vim /etc/sudoers
#在文件中添加
hadoop ALL=(ALL:ALL) ALL

#改变目录所有权
chown -R hadoop:hadoop hadoop-2.9.2/
chmod -R 755 hadhbase-1.4.9/

chown -R hadoop:hadoop hbase-1.4.9/
chmod -R 755 hbase-1.4.9/