Hadoop有官方发行版与cloudera版,其中cloudera版是Hadoop的商用版本,这里先介绍Hadoop官方发行版的安装方法。
Hadoop有三种运行方式:单节点方式、单机伪分布方式与集群方式。乍看之下,前两种方式并不能体现云计算的优势,在实际应用中并没有什么意义,但是在程序的测试与调试过程中,它们还是很有意义的。
由于项目的需要,最近研究了cloudera版和发行版的安装,cloudera的确是商用,安装和管理方便,但由于机器短缺无法进行很好的实验,执行一个简单的任务都卡半天。最后就只能通过发行版的单机伪分布方式来当练手。
当前Hadoop稳定版的版本是2.2.0( 稳定版的下载地址),本次就以这个版本为例子来进行安装和实验。在安装Hadoop前,需要先安装JDK(JDK6或更高版本,但建议使用JDK6,因为并不是所有的软件都支持1.7版本),SSH免密码登录(不配置,则在启动hadoop时会提示输入密码)。
JDK6安装(使用Root用户操作)
#下载JDK6包到/opt目录下(jdk-6u45-linux-x64-1.bin) #解压jdk cd /opt chmod u+x jdk-6u45-linux-x64-1.bin ./jdk-6u45-linux-x64-1.bin #配置java环境变量 vi /etc/profile ################################# export JAVA_HOME=/opt/jdk1.6.0_45 export PATH=$JAVA_HOME/bin:$PATH ################################# source /etc/profile
新增hadoop用户
adduser hadoop su - hadoop #切换用户
SSH免密码登录(使用hadoop用户)
ssh-keygen -t rsa #(连续三次回车,即在本地生成了公钥和私钥,不设置密码) cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #(将id_rsa.pub的内容追加到 authorized_keys 中)
主机名的配置
vi /etc/hostname ################# node1 ################# vi /etc/hosts ################# 127.0.0.1 node1 ################# hostname node1
Hadoop下载和解压
wget http://mirror.bit.edu.cn/apache/hadoop/common/stable/hadoop-2.2.0.tar.gz tar -zxvf hadoop-2.2.0.tar.gz
Hadoop环境变量的配置
vi .profile ##################追加以下内容################## export HADOOP_HOME=/home/hadoop/hadoop-2.2.0 export PATH=$PATH:$HADOOP_HOME/bin ############################################## source .profile vi hadoop-2.2.0/etc/hadoop/hadoop-env.sh ###############在顶部追加以下内容############### export JAVA_HOME=/opt/jdk1.6.0_45 ############################################# cd hadoop-2.2.0 mkdir names mkdir datas
hadoop-2.2.0/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>fs.default.name</name> <value>hdfs://node1:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop-2.2.0/tmp</value> </property> </configuration>
hadoop-2.2.0/etc/hadoop/hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.name.dir</name> <value>/home/hadoop/hadoop-2.2.0/names/name1</value> <description> </description> </property> <property> <name>dfs.data.dir</name> <value>/home/hadoop/hadoop-2.2.0/datas/data1</value> <description> </description> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
hadoop-2.2.0/etc/hadoop/mapred-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapred.job.tracker</name> <value>node1:9001</value> </property> <property> <name>mapred.local.dir</name> <value>/home/hadoop/hadoop-2.2.0/tmp</value> </property> </configuration>
格式化Hadoop文件系统HDFS
bin/hadoop namenode -format
启动Hadoop
sbin/start-all.sh
验证Hadoop是否启动成功
netstat -tlnp #查看监听端口 jps #查看java进程 #打开Web管理界面 http://node1:8088/
准备测试数据
mkdir txt vi txt/01.txt ##########内容是以下内容######### this is is a first txt. today is a new day. my name is ding xiaoyang. haha 丁小样 ############################## vi txt/02.txt ##########内容是以下内容######### one two three four five six. today is a good day. my name is ding xiaoyang. haha 丁小样 ############################## vi txt/03.txt ##########内容是以下内容######### this is is a first txt. today is a new day. my name is ding xiaoyang. haha 丁小样 ##############################
#测试Hadoop
#创建文件目录 bin/hdfs dfs -mkdir /tmp #拷贝文件到文件目录 bin/hdfs dfs -copyFromLocal txt/*.txt /tmp #执行测试 bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /tmp/ /tmp-output #查看测试结果 bin/hdfs dfs -cat /tmp-output/* ###########结果如下########### a 5 day. 3 ding 3 first 2 five 1 four 1 good 1 haha 3 is 10 my 3 name 3 new 2 one 1 six. 1 this 2 three 1 today 3 two 1 txt. 2 xiaoyang. 3 丁小样 3 ######################