今天总算把hadoop搭建起来了

1.生成ssh的密钥对(这个不细说)

2.解压hadoop的压缩包

cd hadoop/conf
vi hadoop-env.sh

#在里面增加export JAVA_HOME=jdk路径,然后保存退出

cd ~
vi .bash_profile
#在里面增加export HADOOP_HOME=hadoop的路径,然后保存退出
. .bash_profile

vi /opt/hadoop-0.21.0/conf/core-site.xml
/*在里面增加
  <property>
    <name>fs.default.name</name>
    <value>hdfs://10.10.11.47:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/tmp/hadoop/hadoop-${user.name}</value>
  </property>
*/


vi /opt/hadoop-0.21.0/conf/hdfs-site.xml 
/*在里面增加
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
*/

vi /opt/hadoop-0.21.0/conf/mapred-site.xml
/*在里面增加
  <property>
    <name>mapred.job.tracker</name>
    <value>10.10.11.47:9001</value>
  </property>
*/

vi masters 
/*添加10.10.11.47 //因为47为主机*/

vi slaves 
/*添加10.10.11.26 //因为26为结点机*/

然后把整个hadoop项目复制给其他要集群的机器

source /opt/hadoop-0.21.0/conf/hadoop-env.sh 
/opt/hadoop-0.21.0/bin/hadoop namenode -format

start-all.sh(停止用stop-all.sh)
#这里有地方要注意:如果你的ssh端口不是22,那么要修改这个文件conf/hadoop-env.sh,
#在里面增加export HADOOP_SSH_OPTS="-p 1234"





另外在这搭建过程中,多次在cygwin上运行hadoop时碰到ClassNotFound: org.apache.hadoop.util.PlatformName 暂时还是不知道怎么解决,后来我直接放到linux上跑,却没发现有问题。



参考网址:http://tlyxy228.blog.163.com/blog/static/1810901201051823538148/


http://tlyxy228.blog.163.com/blog/static/18109012010520936180/



把文件put到hdfs文件系统后,用hadoop-mapred-examples-0.21.0.jar测试一下,运行下面的命令行


/opt/hadoop-0.21.0/bin/hadoop jar hadoop-mapred-examples-0.21.0.jar wordcount input output


input 和 ouput 都是hdfs文件系统中的目录,不是服务器上的目录,这个不要搞混了。


运行完后,bin/hadoop dfs -cat output/* //直接查看内容



显示结果


[resin17@blog2 hadoop-0.21.0]$ /opt/hadoop-0.21.0/bin/hadoop  dfs -cat output/*                                          
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

10/09/16 18:39:05 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
10/09/16 18:39:05 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
hello 1
world 1




[color=red][b]注意:[/b][/color]


在这里可能会在put文件到hdfs文件系统时报一个异常:


[b][color=red]could only be replicated to 0 nodes, instead of 1[/color][/b]


这个异常主要是因为hdfs文件系统出现异常,解决方法是,先停止hadoop,然后hadoop namenode -format,最后所有的服务器都到hadoop.tmp.dir这里配置路径清除文件,再重启再put一次,基本上就没问题了。最后我想说的是有些人老是说防火墙问题,真的是防火墙问题吗,用脑想想再发表文章,不懂就不要乱抽风,浪费老子的时间。



各种异常处理方法的参考网址:http://wiki.apache.org/hadoop/HowToSetupYourDevelopmentEnvironment




===========================================================================


hive搭建


wget http://apache.etoak.com/hadoop/hive/hive-0.5.0/hive-0.5.0-bin.tar.gz
tar -zxvf hive-0.5.0-bin.tar.gz
cd hive-0.5.0/conf
cp hive-default.xml hive-site.xml

vi bin/hive-config.sh
/*在里面添加
export HIVE_HOME=/home/iic/hive-0.5.0-bin
export HADOOP_HOME=/home/iic/hadoop-0.20.2
export JAVA_HOME=/home/bmb/jdk1.6.0_16*/
//保存退出,启动进入hive
/opt/hive-0.5.0-bin/bin/hive --auxpath
//输入show tables;控制台如果返回OK,表示启动成功;

启动web管理页面
bin/hive --service hwi
然后再浏览器输入:http://xxxxx:9999/hwi/



参考网址:http://genius-bai.iteye.com/blog/643691


http://yymmiinngg.iteye.com/blog/708230



注意 进入hive后进行查询 如果出现类似这样的异常


Caused by: java.lang.IllegalArgumentException: Wrong FS: hdfs://10.10.11.47:9000/tmp/hive-resin17/2045437652, expected: hdfs://img011.photo.bbapp.net:9000


则需要修改hadoop/conf中的core-site.xml这个文件,把里面的hdfs://10.10.11.47:9000改为hdfs://img011.photo.bbapp.net:9000这样,然后到host设置img011.photo.bbapp.net



重新进入hive,再次查询,应该就没什么问题了




注意:hive.log到/tmp/当前linux账户名/hive.log查看