Ubuntu 11.10 下使用hadoop-0.20.203.0

主要参考: http://hadoop.apache.org/docs/r0.20.0/quickstart.html

其中,JAVA_HOME设置的为/usr/lib/jvm/java-6-sun ,这个为本机java的路径,可以将java-6-openjdk改为这个,命令:update-java-alternatives -s java-6-sun

单台操作

这个模式是在一个java进程中运行hadoop,便于调试,具体操作为在根目录下:

$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-examples-0.20.203.0.jar grep input output 'dfs[a-z.]+'
$ cat output/*


bin/hadoop jar(使用hadoop运行jar包) hadoop-examples-0.20.203.0.jar(jar包的名字) grep (要使用的类,后边的是参数)input output 'dfs[a-z.]+',整个就是运行hadoop示例程序中的grep,对应的hdfs上的输入目录为input、输出目录为output。
这里的grep是 A map/reduce program that counts the matches of a regex in the input.并不是我们通常使用的grep。

最后cat的结果为:1    dfsadmin

伪分布式操作

在单结点上模拟分布式操作,每一个hadoop daemon都于不同的Java进程。具体操作如下:

切换到hadoop用户(也可以使用root,但是后面要修改一下hadoop脚本,去掉-jvm选项)

设置免ssh登陆
$ ssh localhost

如果弹出了需要输入密码的提示,使用下面:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

我使用root用户运行了这个命令之后,再ssh localhost ,还是需要输入密码,但是登陆一次之后就可以免密钥登陆了。使用hadoop用户的话,配置好之后就直接可以免密钥登陆了。

配置相关文件:

conf/core-site.xml:

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>

 <!--  fs.default.name - 这是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。-->

conf/hdfs-site.xml:

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

 <!-- dfs.replication -它决定着 系统里面的文件块的数据备份个数。对于一个实际的应用,它 应该被设为3(这个数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的可靠性(系统故障时,也许会造成数据丢失)-->

 <!--  dfs.data.dir - 这是DataNode结点被指定要存储数据的本地文件系统路径。DataNode结点上的这个路径没有必要完全相同,因为每台机器的环境很可能是不一样的。但如果每台机器上的这个路径都是统一配置的话,会使工作变得简单一些。默认的情况下,它的值hadoop.tmp.dir, 这个路径只能用于测试的目的,因为,它很可能会丢失掉一些数据。所以,这个值最好还是被覆盖。
dfs.name.dir - 这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用到它。上面对于/temp类型的警告,同样也适用于这里。在实际应用中,它最好被覆盖掉。-->


conf/mapred-site.xml:

 

<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:9001</value>
  </property>
</configuration>

 

<!-- mapred.job.tracker -JobTracker的主机(或者IP)和端口。-->

格式化分布式文件系统

$ bin/hadoop namenode -format

启动hadoop daemons

$ bin/start-all.sh

hadoop daemon的日志被写到${HADOOP_LOG_DIR}目录,这个目录默认是${HADOOP_HOME}/logs

可以输入jps看daemon是否启动起来,也可以通过web接口查看namenode和JobTracker

  • NameNode - http://localhost:50070/
  • JobTracker - http://localhost:50030/

 

我报这个错误导致data node没有启动起来:

localhost: Unrecognized option: -jvm
localhost: Could not create the Java virtual machine.

解决办法:

1)修改hadoop启动脚本,

2)换成hadoop用户

详见hadoop Unrecognized option: -jvm


$ bin/hadoop fs -put conf input

上面的命令将本机上的conf目录拷贝到分布式文件系统的input目录

运行提供的例子:
$ bin/hadoop jar hadoop-examples-0.20.203.0.jar grep input output 'dfs[a-z.]+'

检查输出文件:
$ bin/hadoop fs -get output output
$ cat output/*

将分布式文件系统的output目录拷贝到当前的output目录

或者直接在分布式文件系统中查看:
$ bin/hadoop fs -cat output/*

最后关闭整个集群:
$ bin/stop-all.sh

PS: 进入hadoop目录,在bin/下面有很多启动脚本,可以根据自己的需要来启动。

* start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack

* stop-all.sh 停止所有的Hadoop

* start-mapred.sh 启动Map/Reduce守护。包括Jobtracker和Tasktrack

* stop-mapred.sh 停止Map/Reduce守护

* start-dfs.sh 启动Hadoop DFS守护Namenode和Datanode

* stop-dfs.sh 停止DFS守护  

 

分部件的启动方式:

启动Hadoop集群需要启动HDFS集群和Map/Reduce集群。

在分配的NameNode上,运行下面的命令启动HDFS:
$ bin/start-dfs.sh(单独启动HDFS集群)

bin/start-dfs.sh脚本会参照NameNode上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上启动DataNode守护进程。

在分配的JobTracker上,运行下面的命令启动Map/Reduce:
$bin/start-mapred.sh (单独启动Map/Reduce)

bin/start-mapred.sh脚本会参照JobTracker上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上启动TaskTracker守护进程。

 

bin/hadoop这个好像就是程序了,启动jobtracker的命令是:

$HADOOP_HOME/bin/hadoop --config $HADOOP_HOME/conf jobtracker

用这个启动,程序不会退出。

使用脚本启动jobtracker的命令是:

"$bin"/hadoop-daemon.sh --config $HADOOP_CONF_DIR start jobtracker

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. spyder 5.4.1 requires pyqt5<5.16, which is not installed. spyder 5.4.1 requires pyqtwebengine<5.16, which is not installed. Successfully installed aiofiles-23.1.0 altair-4.2.2 blinker-1.6.2 cachetools-5.3.1 chardet-5.1.0 cmake-3.26.3 cpm_kernels-1.0.11 fastapi-0.95.2 ffmpy-0.3.0 gitdb-4.0.10 gitpython-3.1.31 gradio-3.32.0 gradio-client-0.2.5 h11-0.14.0 httpcore-0.17.2 httpx-0.24.1 latex2mathml-3.76.0 linkify-it-py-2.0.2 lit-16.0.5 markdown-it-py-2.2.0 mdit-py-plugins-0.3.3 mdtex2html-1.2.0 mdurl-0.1.2 nvidia-cublas-cu11-11.10.3.66 nvidia-cuda-cupti-cu11-11.7.101 nvidia-cuda-nvrtc-cu11-11.7.99 nvidia-cuda-runtime-cu11-11.7.99 nvidia-cudnn-cu11-8.5.0.96 nvidia-cufft-cu11-10.9.0.58 nvidia-curand-cu11-10.2.10.91 nvidia-cusolver-cu11-11.4.0.1 nvidia-cusparse-cu11-11.7.4.91 nvidia-nccl-cu11-2.14.3 nvidia-nvtx-cu11-11.7.91 orjson-3.8.14 protobuf-3.20.3 pydantic-1.10.8 pydeck-0.8.1b0 pydub-0.25.1 pygments-2.15.1 pympler-1.0.1 python-multipart-0.0.6 rich-13.4.1 semantic-version-2.10.0 sentencepiece-0.1.99 smmap-5.0.0 starlette-0.27.0 streamlit-1.22.0 streamlit-chat-0.0.2.2 torch-2.0.1 transformers-4.27.1 triton-2.0.0 tzlocal-5.0.1 uc-micro-py-1.0.2 uvicorn-0.22.0 validators-0.20.0 websockets-11.0.3 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv 解释下
06-02

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值