Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在新的Ubuntu实例上安装Hadoop和Pydoop_Python_Ubuntu_Hadoop_Amazon Web Services - Fatal编程技术网

Python 如何在新的Ubuntu实例上安装Hadoop和Pydoop

Python 如何在新的Ubuntu实例上安装Hadoop和Pydoop,python,ubuntu,hadoop,amazon-web-services,Python,Ubuntu,Hadoop,Amazon Web Services,我看到的大多数安装说明都很冗长。在Amazon EC2上的Ubuntu实例上,是否有一组类似于脚本的命令,我们可以执行这些命令来设置Hadoop和Pydoop?创建一个Ubuntu实例。我把我的设置为一个Ubuntu 14.04 Linux,在一个m3.medium的spot实例上,有20GB的数据存储(终止时删除),所有端口都打开(为了安全起见) ssh到服务器中,并逐段复制粘贴下面的命令 sudo apt-get -y update sudo apt-get -y install defau

我看到的大多数安装说明都很冗长。在Amazon EC2上的Ubuntu实例上,是否有一组类似于脚本的命令,我们可以执行这些命令来设置Hadoop和Pydoop?

创建一个Ubuntu实例。我把我的设置为一个Ubuntu 14.04 Linux,在一个m3.medium的spot实例上,有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
安装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

另一个解决方案是使用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个Hadoop节点

    juju deploy --constraints "cpu-cores=2 mem=4G root-disk=20G" hadoop
    
  • 您可以使用跟踪部署

    juju debug-log
    
    并使用获取有关新实例的信息

    juju status
    
    <>这是部署Hadoop所需的唯一命令(可以考虑JuJu作为复杂系统APT的演化)

  • 使用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
    
  • 扩展使用(单独的HDFS和MapReduce,实验)


  • 对于Pydoop,您必须像第一个答案中那样手动部署它(您可以通过“Juju ssh”访问Juju实例),或者您可以编写“charm”(Juju学习如何部署Pydoop的方法)

    从您的详细回答来看,似乎只有以下几点可以解决这个问题:“您必须手动部署它…”和“您可以编写…”
    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
    
    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