pyhblacksky / hadoop_in_linux Goto Github PK
View Code? Open in Web Editor NEWhadoop在linux下的安装与使用
hadoop在linux下的安装与使用
英文原版详见这里,这里是自己操作中的理解
默认情况下,Hadoop被配置为以非分布模式运行,作为单个Java进程。 这对调试很有用。
以下示例将解压后的conf目录复制为输入,然后查找并显示给定正则表达式的每个匹配项。 输出写入给定的输出目录。
在 /usr/hadoop/ 目录下创建input,然后拷贝相应文件
$ mkdir input
$ cp /hadoop-3.1.0/etc/hadoop/*.xml input
$ hadoop jar /usr/hadoop/hadoop-3.1.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar grep input output 'dfs[a-z.]+'
在 /usr/hadoop/ 目录下会自动生成output文件夹
注意:执行 hadoop jar ... 这段代码时,回退到/usr/hadoop/ 目录执行
Hadoop也可以在伪分布模式下的单节点上运行,其中每个Hadoop守护进程都在单独的Java进程中运行。
组态设置:
在 /usr/hadoop/hadoop-3.1.0/etc/hadoop 目录下使用vi编辑 core-site.xml
文件
原版:
<configuration>
</configuration>
修改为:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/data</value>
</property>
</configuration>
fs.defaultFS参数配置的是HDFS的地址。
hadoop.tmp.dir配置的是Hadoop临时目录,比如HDFS的NameNode数据默认都存放这个目录下
编辑 hdfs-site.xml 文件
原版:
<configuration>
</configuration>
修改为:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1
1.格式化HDFS文件系统
$ hdfs namenode -format
格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中。
格式化后,查看core-site.xml里hadoop.tmp.dir(本例是/usr/hadoop/data目录)指定的目录下是否有了dfs目录,如果有,说明格式化成功。
注意:(无问题可以忽略)
格式化时,这里注意hadoop.tmp.dir目录的权限问题,应该hadoop普通用户有读写权限才行,可以将/usr/hadoop/data的所有者改为hadoop。
$ sudo chown -R hadoop:hadoop /usr/hadoop/data
查看NameNode格式化后的目录。
2.启动NameNode和DataNode
$ cd /usr/hadoop/hadoop-3.1.0/sbin
$ ./start-dfs.sh
或者使用以下命令:
$ cd /usr/hadoop/hadoop-3.1.0/sbin
$ ./hadoop-daemon.sh start datanode
$ ./hadoop-daemon.sh start namenode
出现以下错误的相关处理:
Starting namenodes on [localhost]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [bogon]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
处理1(HDFS)
$ vi sbin/start-dfs.sh
$ vi sbin/stop-dfs.sh
两处增加以下内容
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
处理2(YARN)
$ vi sbin/start-yarn.sh
$ vi sbin/stop-yarn.sh
两处增加以下内容
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
hadoop进程日志输出被写入到$ HADOOP_LOG_DIR目录(默认为$ HADOOP_HOME / logs)。
使用$ jps
命令查看是否已经启动成功,有结果就是启动成功了。
例如
$ jps
28021 DataNode
28043 Jps
27471 NameNode
*( 不重要)3.可以浏览NameNode的Web界面; 默认情况下它位于:
NameNode - http://localhost:50070/
4.创建执行MapReduce所需的HDFS目录:
$ hdfs dfs -mkdir /user
$ hdfs dfs -mkdir /user/<username>
本例中 执行 $ hdfs dfs -mkdir /demo1
上传本地文件到HDFS上
$ hdfs dfs -put /usr/hadoop/bigdata_homework/100KWikiText.txt /demo1
说明:上传的文件,上传文件命名
读取HDFS上的文件内容
$ hdfs dfs -cat /demo1
从HDFS上下载文件到本地:
$ hdfs dfs -get /demo1
配置、启动YARN *(未实际验证)
另外,您可以通过设置几个参数并运行ResourceManager进程和NodeManager进程,以伪分布模式在YARN上运行MapReduce作业。
以下说明假定已经执行了上述指令的1〜4个步骤。
1.配置参数如下:
$ vi /usr/hadoop/hadoop-3.1.0/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
$ vi /usr/hadoop/hadoop-3.1.0/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
2.启动ResourceManager和NodeManager:
$ cd /usr/hadoop/hadoop-3.1.0/sbin/
$ ./start-yarn.sh
3.浏览ResourceManager的Web界面
默认情况下为:ResourceManager - http://localhost:8088/
4.运行MapReduce作业
5.运行完后停止
$ cd /usr/hadoop/hadoop-3.1.0/sbin/
$ ./stop-yarn.sh
详情参考英文文献,这里
在linux环境下,设置Hadoop单节点的安装,以便使用HDFS快速执行简单操作。
在linux环境下确保已经有以下环境:
$ vi /etc/profile
$ source /etc/profile
使修改生效
2.安装ssh,必须运行sshd才能远程运行
3.一些linux下的必要命令
$ sudo apt-get install ssh
$ sudo apt-get install rsync
4.使用wget下载hadoop
http://www.apache.org/dyn/closer.cgi/hadoop/common/
在Hadoop解压的目录中,使用vi编辑目录下的 etc/hadoop/hadoop-env.sh 文档,加入以下内容
# set to the root of your Java installation
export JAVA_HOME=/usr/java/jdk_version
在Hadoop目录下,使用
$ ./hadoop
进行测试是否成功
$ vi /etc/profile
在profile中加入以下内容
# set hadoop environment
export HADOOP_HOME=/usr/hadoop/hadoop-3.1.0
export PATH=$PATH:$HADOOP_HOME/bin
使用$ source /etc/profile
使其生效
使用$ hadoop
,无错即成功
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.