簡體   English   中英

如何在新的Ubuntu實例上安裝Hadoop和Pydoop

[英]How do I install Hadoop and Pydoop on a fresh Ubuntu instance

我看到的大多數設置說明都很詳細。 是否有類似腳本的命令,我們可以執行這些命令來在Amazon EC2上的Ubuntu實例上設置Hadoop和Pydoop?

另一種解決方案是使用Juju(Ubuntu的服務編排框架)。

首先在標准計算機上安裝Juju客戶端:

sudo add-apt-repository ppa:juju/stable
sudo apt-get update && sudo apt-get install juju-core

此處也提供MacOS和Windows的說明)

然后生成配置文件

juju generate-config

並使用您首選的雲憑據(AWS,Azure,GCE ...)對其進行修改。 基於m3.medium的命名,我假設您使用AWS,因此請遵循這些說明

注意:上述操作只需進行一次。

現在引導

 juju bootstrap amazon

像網站上提供的演示一樣部署GUI(可選)

juju deploy --to 0 juju-gui && juju expose juju-gui

您將找到GUI和密碼的URL:

juju api-endpoints | cut -f1 -d":"
cat ~/.juju/environments/amazon.jenv | grep pass

請注意,上述步驟是任何Juju部署的初步步驟,並且可以在每次要旋轉環境時重復使用。

現在來看看你的Hadoop用例。 你有幾個選擇。

  1. 只需部署1個Hadoop節點即可

     juju deploy --constraints "cpu-cores=2 mem=4G root-disk=20G" hadoop 

您可以使用跟蹤部署

juju debug-log

並獲取有關新實例的信息

juju status

這是部署Hadoop所需的唯一命令(您可以將Juju視為復雜系統的apt的演變)

  1. 使用HDFS和MapReduce部署3個節點的集群

     juju deploy hadoop hadoop-master juju deploy hadoop hadoop-slavecluster juju add-unit -n 2 hadoop-slavecluster juju add-relation hadoop-master:namenode hadoop-slavecluster:datanode juju add-relation hadoop-master:resourcemanager hadoop-slavecluster:nodemanager 
  2. 擴展用法(單獨的HDFS和MapReduce,實驗)

     juju deploy hadoop hdfs-namenode juju deploy hadoop hdfs-datacluster juju add-unit -n 2 hdfs-datacluster juju add-relation hdfs-namenode:namenode hdfs-datacluster:datanode juju deploy hadoop mapred-resourcemanager juju deploy hadoop mapred-taskcluster juju add-unit -n 2 mapred-taskcluster juju add-relation mapred-resourcemanager:mapred-namenode hdfs-namenode:namenode juju add-relation mapred-taskcluster:mapred-namenode hdfs-namenode:namenode juju add-relation mapred-resourcemanager:resourcemanager mapred-taskcluster:nodemanager 

對於Pydoop,您必須像第一個答案一樣手動部署它(您可以通過“juju ssh”訪問Juju實例),或者您可以編寫一個“魅力”(Juju的一種方法來學習如何部署pydoop) )。

創建一個Ubuntu實例。 我在m3.medium現場實例上設置了一個Ubuntu 14.04 Linux,帶有20GB數據存儲(終止時刪除),所有端口都打開(為安全起見)。

ssh進入服務器並逐段復制粘貼下面的命令。

sudo apt-get -y update
sudo apt-get -y install default-jdk
ssh-keygen -t rsa -P ''                            # Press Enter when prompted

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

# See http://www.apache.org/dyn/closer.cgi/hadoop/common/ for latest file version
wget http://download.nextag.com/apache/hadoop/common/current/hadoop-2.6.0.tar.gz
tar xfz hadoop-2.6.0.tar.gz

# Replace the folder/file names for your system
export HADOOP_PREFIX=/home/ubuntu/hadoop-2.6.0
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

配置Hadoop

# Add these into the Hadoop env
cat >> $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh <<EOF
export JAVA_HOME=${JAVA_HOME}
export HADOOP_PREFIX=${HADOOP_PREFIX}
EOF

cat > $HADOOP_PREFIX/etc/hadoop/core-site.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
EOF

cat > $HADOOP_PREFIX/etc/hadoop/hdfs-site.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
EOF

運行獨立節點並向其添加文件

# Format and start HDFS
$HADOOP_PREFIX/bin/hdfs namenode -format
$HADOOP_PREFIX/sbin/start-dfs.sh

# Create a folder
$HADOOP_PREFIX/bin/hdfs dfs -mkdir /user
$HADOOP_PREFIX/bin/hdfs dfs -mkdir /user/sample

# Copy input files into HDFS
$HADOOP_PREFIX/bin/hdfs dfs -put $HADOOP_PREFIX/etc/hadoop/*.xml /user/sample/

# Run example
$HADOOP_PREFIX/bin/hadoop jar $HADOOP_PREFIX/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep /user/sample /user/output 'dfs[a-z.]+'

安裝Pydoop

sudo apt-get -y install build-essential python-dev
sudo bash    # To avoid sudo pip install not geting the env variables
export HADOOP_HOME=/home/ubuntu/hadoop-2.6.0
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
pip install pydoop

使用此Python腳本測試Pydoop:

import pydoop.hdfs
hdfs = pydoop.hdfs.hdfs()
hdfs.list_directory('/user/sample')
# This lists all files under /user/sample

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM