一、机器环境
- 系统:MAC OS
- Hadoop:2.7.3
- Hbase:1.2.4
- JDK: 1.8.0_112
二、配置SSH免密码登录
第一步:打开terminal,进入根目录,运行命令:
cd
第二步: 显示隐藏文件,这时还没有.ssh文件夹
ls –a
第三步:生成密钥
ssh-keygen -t rsa -P ""
第四步,进入.ssh文件夹,运行:
cat id_rsa.pub >> authorized_keys
第五步: ssh登录
ssh localhost
三、安装Hadoop 2.7.3
3.1下载Hadoop
Hadoop下载地址:http://hadoop.apache.org/releases.html
下载hadoop-2.7.3.tar.gz,大约204MB。
下载后解压缩:
sudo tar –zxvf hadoop-2.7.3.tar.gz
Hadoop有三种安装模式:单机模式、伪分布式模式、分布式模式。
3.2运行Hadoop单机模式
解压安装文件之后,就是单机模式,运行wordcount测试是否安装成功。
第一步:在hadoop-2.7.3目录下新建input文件夹。
sudo mkdir input
第二步:在input文件夹下新增2个文本文件用于测试。
echo 'hello world' > file1.txt
echo 'hello hadoop' > file2.txt
第三步:运行wordcount例子
sudo ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-
mapreduce-examples-2.7.3.jar wordcount input/ output
No news is good news,没waring、没error就说明正确运行。
第四步:查看运行结果:
cat output/part-r-00000
统计结果:
hadoop 1
hello 2
world 1
3.3 Hadoop伪分布式模式
3.3.1修改hadoop-env.sh
文件位置: hadoop-2.7.3/etc/hadoop/hadoop-env.sh
注释掉 HADOOP_OPTS
#export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"
改为:
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="
3.3.2修改core-site.xml
文件位置: hadoop-2.7.3/etc/hadoop/core-site.xml
修改为如下配置:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/Cellar/hadoop-2.7.3/hdfs/tmp</value>
<description>A base for other temporary directories</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
其中/Users/bee/Documents/bd/hadoop-2.7.3/hdfs/tmp可以自定义. fs.default.name 保存了NameNode的位置,HDFS和MapReduce组件都需要用到它,这就是它出现在core-site.xml 文件中而不是 hdfs-site.xml文件中的原因。
3.3.3修改mapred-site.xml.template
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9010</value>
</property>
</configuration>
变量mapred.job.tracker 保存了JobTracker的位置,因为只有MapReduce组件需要知道这个位置,所以它出现在mapred-site.xml文件中。
3.3.4修改hdfs-site.xml
变量dfs.replication指定了每个HDFS数据库的复制次数。 通常为3, 由于我们只有一台主机和一个伪分布式模式的DataNode,将此值修改为1。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3.4启动hadoop
3.4.1格式化hdfs
./bin/hadoop namenode -format
3.4.2启动Hadoop
运行启动命令:
./sbin/start-all.sh
查看进程:
jps
启动成功之后可以看到NodeManager、NameNode、SecondaryNameNode、ResourceManager这几个进程。
2338 NodeManager
2389 Jps
1900 NameNode
2108 SecondaryNameNode
2238 ResourceManager
访问HDFS的web端口: http://localhost:50070
四、安装Hbase 1.2.4
4.1 Hbase下载
http://hbase.apache.org/
下载后解压缩。
4.2 单机运行
查看Hbase版本:
./bin/hbase version
启动Hbase:
./bin/start-hbase.sh
进入Hbase shell:
./bin/hbase shell
4.3伪分布式运行
4.3.1 第一步:修改hbase-env.sh
文件位置: hbase-1.2.4/conf/hbase-env.sh
开启HBASE_MANAGES_ZK,改值默认是注释的,作用是:使用自带的ZooKeeper。我们为了方便,使用Hbase自带的ZooKeeper:
export HBASE_MANAGES_ZK=true
4.3.2 第二步:修改hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
4.3.3启动Hbase
启动之前,先启动hadoop:
./sbin/start-all.sh
再启动hbase:
./bin/start-hbase.sh
启动hbase后输入jps,显示HMaster,则成功.
五、HDFS 50070无法访问
2017年5月12日更新。
这两天启动Hadoop发现50070端口无法访问,仔细核对了配置,并且格式化了namenode,就是无法访问!死活找不到原因,今天终于找到了。
因为要破解idea,我在/etc/hosts文件中加了一行:
0.0.0.0 account.jetbrains.com
注释掉,Hadoop恢复正常。