Linux中单机配置Hadoop

来源:互联网 发布:淘宝上的白酒靠谱吗 编辑:程序博客网 时间:2024/06/04 23:36

Ubuntu:

一、安装JAVA。

首先安装java。因为Ubuntu里面默认安装了OpenJDK,可以先将其卸载。在终端输入命令:sudo apt-get purge openjdk*。

1、从sun主页下载JDK for linux 版本。我下载的是jdk-6u37-linux-i586.bin。下载地址:点击打开

2、切换到root用户并切换到想要安装的目录。我的安装目录为/usr/lib/jvm/java。将下载的文件拷贝到此目录中。并使用命令:chmod a+x jdk-6u37-linux-i586.bin将此文件权限设置为可执行类型。

3、开始安装。在终端输入:./jdk-6u37-linux-i586.bin,接下来会进行安装过程。安装过程中会提示按Enter键继续。

4、安装完成后,会出现Done。表示完成了java环境的安装。安装的位置为当前目录/usr/java。当然,也可以选择其他的位置。

5、安装完成后,直接在终端输入java会出错。此时还需要配置环境变量。如果只使用export命令则支队当前shell起作用。如果切换shell或重启则依旧会失效。可以选择配置.bashr文件或/etc/profile,后者修改系统配置文件,对所有用户均有效。

6、使用vim打开/etc/profile文件。在末尾添加如下内容:

export JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_37export JRE_HOME=/usr/lib/jvm/java/jdk1.6.0_37/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

注:注意一定不要错误,否则有可能重启后无法进入系统,如果由于输入错误,导致开机之后只有空白的界面,按ctrl+Alt+F1进入tty1命令行界面,输入命令:sudo vim /etc/profile 检查刚刚的配置是否有错误的地方,改正后重启即可。注意export命令=两边没有空格。

7、保存后重新启动计算机。

注:网上有资料说可以使用source更新一下。在终端输入命令:source /etc/profile。经本人测试,这种方法会导致只在一个终端中有效,如果打开新的终端会java配置会失效,除非再次使用source命令更新。)

8、使用env命令查看各环境变量的值。如果各项变量内容都与之前配置的相同,则说明配置成功。也可使用java -version命令察看。如果能输出java version "1.6.0_37"则表明配置正确。

二、创建Hadoop组和Hadoop用户。

1、创建hadoop用户组:sudo addgroup hadoop

2、创建hadoop用户:sudo adduser -ingroup hadoop hadoopusr。过程中会要求你输入密码和用户信息。输入用户信息的时候,可直接点Enter(表示默认)。最后输入y。

3、给刚新建的hadoop用户hadoopusr添加权限,打开/etc/sudoers文件。输入命令:sudo gedit /etc/sudoers。给hadoopusr赋予root用户同样的权限。在文件末尾添加如下信息:

root    ALL=(ALL:ALL)  ALLhadoopusr  ALL=(ALL:ALL)  ALL

三、安装ssh服务

ssh可以实现远程登录和管理,具体可以参考其他相关资料。

输入命令:sudo apt-get install ssh openssh-server,安装openssh-server。

如果你已经安装好了ssh,可以直接进行下一步。

四、建立ssh无密码登录本机

首先要转换成hadoop用户,执行以下命令:su - hadoopusr,再输入密码即可。

ssh生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式。

1、创建ssh-key,我们采用rsa方式。输入命令:ssh-keygen -t rsa -P ""

输入命令后会出现提示信息:“Enter file in which to save the key (/home/hadoopusr/.ssh/id_rsa):”,直接点回车即可。出现如下信息:

Created directory '/home/hadoopusr/.ssh'.Your identification has been saved in /home/hadoopusr/.ssh/id_rsa.Your public key has been saved in /home/hadoopusr/.ssh/id_rsa.pub.The key fingerprint is:d4:29:00:6e:20:f0:d9:c6:a2:9b:cd:22:60:44:af:eb hadoopusr@shan-pcThe key's randomart image is:+--[ RSA 2048]----+|+.. ...          ||.o.*   . . .     || .+.*   o o      ||...+   . .       ||oo      S        ||o=.              ||=.o              ||o.               || E               |+-----------------+

(注:回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub。这两个文件是成对出现的。)

2、进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始没有authorized_keys文件。执行命令:

cd ~/.ssh
cat id_rsa.pub >> authorized_keys

完成后即可无密码登录本机。

3、登录localhost。在终端输入命令:ssh localhost

(注:当ssh远程登录到其它机器后,你控制的是远程的机器,需要执行退出命令才能重新控制本地主机。)

4、执行退出命令。输入命令:exit

五、安装Hadoop。

在Hadoop官网下载Hadoop。本次使用的版本为1.1.0。在官网下载hadoop-1.1.0.tar.gz。(注:使用非root用户)下载地址:点击打开

1、假设hadoop-1.1.0.tar.gz在桌面,将它复制到安装目录 /usr/local/下。执行命令:sudo cp hadoop-0.20.203.0rc1.tar.gz /usr/local/

2、解压hadoop-1.1.0.tar.gz。执行命令:

cd /usr/local
sudo tar -zxf hadoop-1.1.0.tar.gz

3、将解压出的文件夹改名为hadoop。执行命令:sudo mv hadoop-1.1.0 hadoop

4、将该hadoop文件夹的属主用户设为hadoopusr。执行命令:sudo chown -R hadoopusr:hadoop hadoop

5、打开hadoop/conf/hadoop-env.sh文件。执行命令:sudo gedit hadoop/conf/hadoop-env.sh

6、配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然后加上本机jdk的路径):export JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_37

7、打开conf/core-site.xml文件。输入命令sudo gedit hadoop/conf/core-site.xml,修改为:(注:如果直接复制此处代码,会有行号。请去掉行号。下同。

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>  <property>    <name>fs.default.name</name>    <value>hdfs://localhost:9000</value>  </property></configuration>


8. 打开conf/mapred-site.xml文件。输入命令:sudo gedit hadoop/conf/mapred-site.xml,修改为:

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>  <property>         <name>mapred.job.tracker</name>        <value>localhost:9001</value>       </property></configuration>

9. 打开conf/hdfs-site.xml文件。输入命令:sudo gedit hadoop/conf/hdfs-site.xml,修改为:
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>  <property>     <name>dfs.name.dir</name>     <value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value>   </property>   <property>     <name>dfs.data.dir</name>     <value>/usr/local/hadoop/data1,/usr/local/hadoop/data2</value>   </property>   <property>     <name>dfs.replication</name>     <value>2</value>   </property> </configuration>

10. 打开conf/masters文件,添加作为secondarynamenode的主机名,作为单机版环境,这里只需填写 localhost 就Ok了。sudo gedit hadoop/conf/masters

11. 打开conf/slaves文件,添加作为slave的主机名,一行一个。作为单机版,这里也只需填写 localhost就Ok了。sudo gedit hadoop/conf/slaves

六、在单机上运行hadoop

1. 进入hadoop目录下,格式化hdfs文件系统,初次运行hadoop时一定要有该操作,

cd /usr/local/hadoop/

bin/hadoop namenode -format

2. 当你看到如下信息时,就说明你的hdfs文件系统格式化成功了。

******************省略信息**********************************/12/11/19 14:13:14 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/usr/local/hadoop/datalog2/current/edits12/11/19 14:13:14 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/usr/local/hadoop/datalog2/current/edits12/11/19 14:13:14 INFO common.Storage: Storage directory /usr/local/hadoop/datalog2 has been successfully formatted.12/11/19 14:13:14 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************SHUTDOWN_MSG: Shutting down NameNode at shan-pc/127.0.1.1************************************************************/

3、启动bin/start-all.sh。输入命令:bin/start-all.sh

4、检测hadoop是否启动成功。输入命令:jps

如果有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker五个进程,就说明你的hadoop单机版环境已经配置完成。

OK,一个hadoop的单机版环境已经搭建完成~接下来我们运行一个实例测试一下~

七、测试

1、进入hadoop目录下(cd /usr/local/hadoop),输入启动命令:bin/start-all.sh。启动hadoop。

2、输入如下命令执行wordcount程序计算过程:

echo "hello world" > /home/hadoopusr/file01
echo "hello hadoop" > /home/hadoopusr/file02
bin/hadoop fs -mkdir input
bin/hadoop fs -copyFromLocal /home/hadoopusr/file0* input
bin/hadoop jar hadoop-examples-1.1.0.jar wordcount input output

hadoopusr@shan-pc:/usr/local/hadoop$ echo "hello world" > /home/hadoopusr/file01hadoopusr@shan-pc:/usr/local/hadoop$ echo "hello hadoop" > /home/hadoopusr/file02hadoopusr@shan-pc:/usr/local/hadoop$ bin/hadoop fs -mkdir inputhadoopusr@shan-pc:/usr/local/hadoop$ bin/hadoop fs -copyFromLocal /home/hadoopusr/file0* inputhadoopusr@shan-pc:/usr/local/hadoop$ bin/hadoop jar hadoop-examples-1.1.0.jar wordcount input output12/11/19 15:34:15 INFO input.FileInputFormat: Total input paths to process : 212/11/19 15:34:15 INFO util.NativeCodeLoader: Loaded the native-hadoop library12/11/19 15:34:15 WARN snappy.LoadSnappy: Snappy native library not loaded12/11/19 15:34:15 INFO mapred.JobClient: Running job: job_201211191500_000612/11/19 15:34:16 INFO mapred.JobClient:  map 0% reduce 0%12/11/19 15:34:21 INFO mapred.JobClient:  map 100% reduce 0%12/11/19 15:34:29 INFO mapred.JobClient:  map 100% reduce 33%12/11/19 15:34:30 INFO mapred.JobClient:  map 100% reduce 100%12/11/19 15:34:31 INFO mapred.JobClient: Job complete: job_201211191500_000612/11/19 15:34:31 INFO mapred.JobClient: Counters: 2912/11/19 15:34:31 INFO mapred.JobClient:   Job Counters 12/11/19 15:34:31 INFO mapred.JobClient:     Launched reduce tasks=112/11/19 15:34:31 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=752012/11/19 15:34:31 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=012/11/19 15:34:31 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=012/11/19 15:34:31 INFO mapred.JobClient:     Launched map tasks=212/11/19 15:34:31 INFO mapred.JobClient:     Data-local map tasks=212/11/19 15:34:31 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=940612/11/19 15:34:31 INFO mapred.JobClient:   File Output Format Counters 12/11/19 15:34:31 INFO mapred.JobClient:     Bytes Written=2512/11/19 15:34:31 INFO mapred.JobClient:   FileSystemCounters12/11/19 15:34:31 INFO mapred.JobClient:     FILE_BYTES_READ=5512/11/19 15:34:31 INFO mapred.JobClient:     HDFS_BYTES_READ=25312/11/19 15:34:31 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=7188412/11/19 15:34:31 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=2512/11/19 15:34:31 INFO mapred.JobClient:   File Input Format Counters 12/11/19 15:34:31 INFO mapred.JobClient:     Bytes Read=2512/11/19 15:34:31 INFO mapred.JobClient:   Map-Reduce Framework12/11/19 15:34:31 INFO mapred.JobClient:     Map output materialized bytes=6112/11/19 15:34:31 INFO mapred.JobClient:     Map input records=212/11/19 15:34:31 INFO mapred.JobClient:     Reduce shuffle bytes=6112/11/19 15:34:31 INFO mapred.JobClient:     Spilled Records=812/11/19 15:34:31 INFO mapred.JobClient:     Map output bytes=4112/11/19 15:34:31 INFO mapred.JobClient:     CPU time spent (ms)=125012/11/19 15:34:31 INFO mapred.JobClient:     Total committed heap usage (bytes)=33633894412/11/19 15:34:31 INFO mapred.JobClient:     Combine input records=412/11/19 15:34:31 INFO mapred.JobClient:     SPLIT_RAW_BYTES=22812/11/19 15:34:31 INFO mapred.JobClient:     Reduce input records=412/11/19 15:34:31 INFO mapred.JobClient:     Reduce input groups=312/11/19 15:34:31 INFO mapred.JobClient:     Combine output records=412/11/19 15:34:31 INFO mapred.JobClient:     Physical memory (bytes) snapshot=32619724812/11/19 15:34:31 INFO mapred.JobClient:     Reduce output records=312/11/19 15:34:31 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=112887398412/11/19 15:34:31 INFO mapred.JobClient:     Map output records=4

3、wordcount程序执行完毕,运行命令bin/hadoop fs -ls output。查看输出结果。如下:

hadoopusr@shan-pc:/usr/local/hadoop$ bin/hadoop fs -ls outputFound 3 items-rw-r--r--   2 hadoopusr supergroup          0 2012-11-19 15:34 /user/hadoopusr/output/_SUCCESSdrwxr-xr-x   - hadoopusr supergroup          0 2012-11-19 15:34 /user/hadoopusr/output/_logs-rw-r--r--   2 hadoopusr supergroup         25 2012-11-19 15:34 /user/hadoopusr/output/part-r-00000

4、输入命令bin/hadoop fs -cat /user/hadoopusr/output/part-r-00000查看最后统计结果。结果如下:

hadoopusr@shan-pc:/usr/local/hadoop$ bin/hadoop fs -cat /user/hadoopusr/output/part-r-00000hadoop1hello2world1

转载请注明出处:http://blog.csdn.net/iAm333