Mac上运行第一个Hadoop实例
之前轉過?一篇文章?,介紹如何配置偽分布式的Hadoop。不過在Mac上的配置方法和Linux上有一點點區別。另外,本篇還從頭介紹了一下創建和運行Hadoop工程的方法。
配置Hadoop
首先確保?java?已經正確安裝,最好使用1.6以上的版本,?java?-version?查看正在使用的版本。把?java?加到 ~/.bash_profile 里。
export JAVA_HOME=`/usr/libexec/java_home`配置?ssh?,為了簡單點兒,使用當前用戶賬號。需要把密鑰文件給自己加上,方便地用?ssh?訪問本機。
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # /usr/sbin/sshd # 有點兒麻煩,需要啟動ssh $ ssh localhost # 驗證一下以偽分布式安裝Hadoop。把Hadoop下載下來,解壓放到比如 /usr/local/ 下,加到環境變量里:
PATH="$PATH:/usr/local/hadoop/bin"改一下用戶,以便后面可以在自己的賬號下啟動它:
# chown -R yeolar:admin /usr/local/hadoopHadoop需要個臨時目錄:
$ mkdir /tmp/hadoop $ chmod 777 /tmp/hadoop配置Hadoop的環境變量,在 /usr/local/hadoop/conf/hadoop-env.sh 中:
export JAVA_HOME=`/usr/libexec/java_home` export HADOOP_OPTS="-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk" # Mac需要這個修改一些配置文件:
/usr/local/hadoop/conf/core-site.xml:
<property><name>hadoop.tmp.dir</name><value>/tmp/hadoop</value><description>A base for other temporary directories.</description> </property><property><name>fs.default.name</name><value>hdfs://localhost:54310</value><description>The name of the default file system. A URI whosescheme and authority determine the FileSystem implementation. Theuri's scheme determines the config property (fs.SCHEME.impl) namingthe FileSystem implementation class. The uri's authority is used todetermine the host, port, etc. for a filesystem.</description> </property>/usr/local/hadoop/conf/mapred-site.xml:
<property><name>mapred.job.tracker</name><value>localhost:54311</value><description>The host and port that the MapReduce job tracker runsat. If "local", then jobs are run in-process as a single mapand reduce task.</description> </property>/usr/local/hadoop/conf/hdfs-site.xml:
<property><name>dfs.replication</name><value>1</value><description>Default block replication.The actual number of replications can be specified when the file is created.The default is used if replication is not specified in create time.</description> </property>格式化HDFS文件系統:
$ hadoop namenode -format現在就可以通過?start-all.sh?和?stop-all.sh?來啟動和停止這個單點集群了。
創建一個Hadoop工程
現在大多用maven創建Java工程。
$ mvn archetype:create -DgroupId=com.yeolar.hmapred -DartifactId=hmapred -DpackageName=com.yeolar.hmapred默認會創建一個App.java,把它刪掉,然后把Hadoop源代碼里面的WordCount.java復制過來,改一下?package?。
我們還要在pom.xml中加上Hadoop依賴:
<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-core</artifactId><version>1.1.1</version> </dependency>現在在工程的根目錄就可以編譯打包了:
$ mvn clean compile $ mvn packagemaven首次會自動下載依賴,需要一些時間。
如果想把maven工程轉換為eclipse工程,可以執行?mvn eclipse:eclipse?。同時還要在Preferences/Java/Build Path/Classpath Variables中添加變量?M2_REPO =?/Users/yeolar/.m2/repository?。
運行Hadoop任務
運行普通的Java包可以使用命令?java?-cp?<jar file> <class>?,不過Hadoop有它自己的方式。
首先,確保Hadoop已經啟動,如果還沒有,使用?start-all.sh?啟動起來。
然后把要處理的文檔放到HDFS里面:
$ hadoop dfs -put doc.txt ~運行Hadoop任務:
$ hadoop jar target/hmapred-1.0-SNAPSHOT.jar com.yeolar.hmapred.WordCount doc.txt out可以合并取出輸出的結果(?-getmerge?),或者直接查看(?-cat?)。
總結
以上是生活随笔為你收集整理的Mac上运行第一个Hadoop实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eclipse下搭建Hadoop开发环境
- 下一篇: Hadoop伪集群环境搭建