笔者对hadoop了解并不多,只是在课业中遇到过,并在搭建时遇到大量意想不到的错误,现就如何搭建与常见错误解决办法做一总结,希望能对大家有所帮助。
以下内容如有侵权,请联系笔者删除,敬谢!
首先在百度云中上传了笔者所用软件版本,及一些测试程序。
[http://pan.baidu.com/s/1miSER12]
0.配置SSH
因为我们会经常用到apt更新软件,现在可以先更新以下工具(联网):
sudo apt-get update
一般来说都不会出现错误,但偏偏笔者遇到了。
解决办法(其他软件遇到相同问题也可这样尝试解决)如下:
尝试多安装几次,若依然错误:
系统设置-> 软件和更新->ubantu 软件->下载自->更改来源(把来源一个一个试试,或者找有眼缘的。)。
安装ssh,ubantu已默认安装SSH Client,需要安装SSH Server
sudo apt-get install openssh-server
安装完成后,打开
ssh localhost
输入你的密码,但这样以后会比较麻烦,现在更改为无密码登录
exit
cd ~/.ssh
ssh-keygen -t rsa //提示都按回车
cat ./id_rsa.pub >> ./authorized_keys
此时登录ssh,无需密码
ssh localhost
1.JDK的安装
若已安装,可跳过。
JDK选择1.7版本,否则有兼容问题,上传资料中已共享。
首先选择安装路径,笔者为/usr/local/Java/
你会发现java文件夹需要自己建立,方法如下:
sudo mkdir /usr/local/java/
查看是否建立成功
找到压缩包存放路径,解压到java文件夹下面:
sudo tar -zxf /home/java/jdk-7u80-linux-x64.tar.gz -C /usr/local/java
注意第一个文件路径为你的jdk存放路径!
下面设置环境变量(注意路径,文件名与你的一致),笔者为了后面方便,一同设置了Hadoop,Hbase,hdfs:
首先找到/etc/profile,建议笔记本修改此文件,采用下面命令,记得使用sudo,不然没有权限!
sudo gedit /etc/profile
把下面内容复制进去,并保存:
JAVA_HOME=/usr/local/java/jdk1.7.0_80
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH
设置默认JDK(注意路径,文件名与你的一致):
sudo update-alternatives --remove-all "java"
sudo update-alternatives --remove-all "javac"
sudo update-alternatives --remove-all "javaws"
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.7.0_80/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.7.0_80/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.7.0_80/bin/javaws" 1
sudo update-alternatives --set java /usr/local/java/jdk1.7.0_80/bin/java
sudo update-alternatives --set javac /usr/local/java/jdk1.7.0_80/bin/javac
sudo update-alternatives --set javaws /usr/local/java/jdk1.7.0_80/bin/javaws
测试jdk
java -version
2.hadoop
再次强调,注意你的压缩包路径及名字!
此处需要复制笔者上传资料的work文件到你的/home/ 目录下面,可直接复制。
解压安装包
```
sudo tar -zxf /home/gaoxun/下载/hadoop-2.6.0.tar.gz -C /usr/local/java
配置文件,首先改变读写权限:
xxx为你的用户名
cd /usr/local/java/
sudo chown -R ××× ./hadoop-2.6.0
配置core-site.xml.
sudo gedit /usr/local/java/hadoop-2.6.0/etc/hadoop/core-site.xml
改变配置如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/×××/work/hdfs</value>
</property>
</configuration>
配置hdfs-site.xml
sudo gedit /usr/local/java/hadoop-2.6.0/etc/hadoop/hdfs-site.xml
改变为:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
下面配置路径:
进入/home/目录下,使用ctrl+h,打开隐藏文件,找到 .bashrc 文件,
输入如下进去:
使.bashrc文件生效
source ~/.bashrc
此时你在终端的任何目录下都可以使用hadoop命令,
hadoop version
启动hdfs
hdfs namenode -format
start-dfs.sh
使用
jps
查看,若jps命令出错,可尝试使用haoop version 后在使用jps
若无datanode则启动错误,查看log日志会发现,datanode ID与namenode ID 不一致,最简单直接解决办法,删除data数据,(注意会删除已经存放数据,如果你第一次配置,并不需要担心这个)
首先关闭hdfs
stop-dfs.sh
data位于
/home/***/work/hdfs/dfs/data
路径中,找到删除,重新启动hdfs。
设置hdfs存放文件的文件夹
hdfs dfs -mkdir /hw1
强烈建议顺便配置hbase文件,以免一会忘记
hdfs dfs -mkdir hbase
可以使用命令查看
hdfs dfs -ls /
往hdfs 中放入文件
hdfs dfs -put ~/work/hw1/tpch/region.tbl /hw1
可使用命令查看是否放入
hdfs dfs -ls /hw1
测试java程序:
注意java程序中的文件名,和我上传的可能不一致,请自行改正
cd ~/work/hw1
javac HDFSTest.java
java HDFSTest.java
会打印出那个文件的内容,测试完毕。
3.hbase
注意要已经在hdfs中生成hbase文件(见上一步),因为我下面配置文件会如此设置
解压
sudo tar -zxf /home/***/下载/hbase-0.98.24-hadoop2-bin.tar.gz -C /usr/local/java
改变读写权限
注意×××,你的用户名
cd /usr/local/java/
sudo chown -R ××× ./hbase-0.98.24-hadoop2
配置
sudo gedit ./conf/hbase-site.xml
复制
注意×××,你的用户名
<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/××××/work/hbase-zookeeper</value>
</property>
</configuration>
启动hbase
**一定确保hdfs已经启动,注意先开hdfs,其次hbase
关闭时一定先关hbase,再关闭hdfs
每次使用都要记得关闭,否则会有意想不到的错误**
start-hbase.sh
jps 查看,若jps命令出错,可尝试使用haoop version 后在使用jps
验证java程序
cd ~/work/hw1
javac HBaseTest.java
java HBaseTest.java
**运行时可能会报log4j错误,是由jar包冲突造成,解决办法如下:
去./hbase-0.98.24-hadoop2/lib 下搜索log4j,把这个jar包剪切到一个新间文件夹,比如笔者放入了orig中**
程序运行完毕可使用hbase命令查看
hbase shell
scan "表的名字"
disable "表名” //删除表
drop “表名” //删除表
exit
4.总结
至此,hadoop,与hbase 基础算是搭建完成,在这过程可能会出现各种想不到的错误,大家要学会总结,举一反三,查看错误日志,最直接有效的方法,尝试多操作几遍,感谢浏览。
关于eclipse与hadoop,hbase的搭建,后期会简述一下。